• Python pandas学习笔记


    参考文献:《Python金融大数据分析》

    #导入模块
    import pandas as pd
    
    #生成dataframe
    df = pd.DataFrame([10,20,30,40], columns=['numbers'],index=['a','b','c','d'])
    print('df:', df)
    
    #常用的一些操作
    print('df.index:', df.index)
    print('df.columns:', df.columns)
    print("df.sum():", df.sum())
    
    #以下操作等价
    print(df**2)
    print(df.apply(lambda x: x**2))
    
    #关于索引的使用
    #print("df.ix['a']:", df.ix['a'])
    #print("df.ix[['a','c']]:", df.ix[['a','c']])
    #print("df.ix[ df.index[[1,3]] ]:", df.ix[ df.index[[1,3]] ])
    print("df['numbers']:", df['numbers'])
    
    #添加数据
    #直接添加一列数据
    df['float'] = (1.5, 2.3, 4.5, 6.7)
    print('df:', df)
    print("df['float']:", df['float'])
    #print("df['float'].ix[['a', 'b']]", df['float'].ix[['a', 'b']])
    
    #可以直接取dataframe作为一列,通过index指定对应的行
    df['names'] = pd.DataFrame(['tom', 'lucy', 'denny', 'kate'], index=['d', 'c', 'b', 'a'])
    print('df:', df)
    #如果指定了一个不存在的index,那么默认不添加该记录,只添加已有index的记录,没有指定的index,默认值为NaN
    df['names_s'] = pd.DataFrame(['tom', 'lucy', 'denny', 'king'], index=['d', 'c', 'b', 'z'])
    print('df:', df)
    
    #补充数据,注意使用append方法不直接修改原dataframe
    #注意。该方式下索引变更为简单索引,这是一个问题
    df1 = df.append({'names':'haha', 'numbers':100, 'float':0.01, 'names_s':'xixi'}, ignore_index=True)
    print('df:', df)
    print('df1:', df1)
    #一个正确提供索引信息的方式
    df = df.append( pd.DataFrame( {'names':'haha', 'numbers':100, 'float':0.01, 'names_s':'xixi'}, index=['z',]) )
    print('df:', df)
    
    #缺漏信息的处理:以原结构的索引为基准,不改变索引数目和名称,join默认添加已经存在的索引,新添加的(即原先不存在的)索引不添加新的索引和值,已存在未指定数值的索引默认值为NaN
    df2 = df.join( pd.DataFrame([11,22,33,44,55], index=['a', 'b', 'c', 'd', 'y'], columns=['int']) )
    print('df2:', df2)
    #实现并集连接:即实现添加新的索引
    df = df.join( pd.DataFrame([11,22,33,44,55], index=['a', 'b', 'c', 'd', 'y'], columns=['int']), how='outer' )
    print('df:', df)
    
    #一些结果
    print( "df[['numbers', 'int']].mean():", df[['numbers', 'int']].mean() )
    print( "df[['numbers', 'int']].std():", df[['numbers', 'int']].std() )

    小括号匹配的问题

    import re
    
    #小括号:匹配整个字段,但结果只取括号中匹配的字符串
    text = r'http://baidu.com'
    p = r'http://(.+?).com'
    pat = re.compile(p)
    print(pat.findall(text))#结果是['baidu']
    
    text2 = r'matlab.python.ruby.python.c'
    p2 = r'matlab.+?.ruby'
    pat2 = re.compile(p2)
    print(pat2.findall(text2))#结果是['matlab.python.ruby']
    p3 = r'matlab(.+?.)ruby'
    pat3 = re.compile(p3)
    print(pat3.findall(text2))#结果是['.python.']
    
    #如果需要精确匹配括号,通过添加反斜杠的方式转义
    text4 = r'matlab(python)ruby.matlab.python.ruby.c'
    p4 = r'matlab(.+?.)ruby'
    pat4 = re.compile(p4)
    print(pat4.findall(text4))#结果是['(python)', '.python.']
    
    p5 = r'matlab((.+?.))ruby'
    pat5 = re.compile(p5)
    print(pat5.findall(text4))#结果是['(python)']
    
    #匹配同一文本串中多个子部分内容
    text6 = r'target="http://www.baidu.com" is "百度" and target="http://www.sougou.com" is "搜狗"'
    p6 = r'target="(.+?)" is "(.+?)"'
    pat6 = re.compile(p6)
    print(pat6.findall(text6))#结果是[('http://www.baidu.com', '百度'), ('http://www.sougou.com', '搜狗')]
  • 相关阅读:
    Django框架(二十三)-- Django rest_framework-视图组件
    Django框架 --序列化组件(serializer)
    Django框架(十六)-- 中间件、CSRF跨站请求伪造
    leetcode 之 两数之和
    vue中webpack相关的配置
    vue-cli3 初始化创建项目
    vue之模块化开发
    vue基础之常用方法
    凯哥带你用python撸算法之雪花算法
    docker数据卷之持久化操作
  • 原文地址:https://www.cnblogs.com/dennis-liucd/p/7527568.html
Copyright © 2020-2023  润新知