pandas笔记

作者: yandaxin | 来源:发表于2018-02-26 18:44 被阅读0次
    1.计算数组a中各个元素出现的次数
    from collections import Counter
    count_list=Counter(a)
    #获取出现次数为前10的元素
    count_list.most_common(10)
    
    2.安装pandas

    下载适合你python版本的 .whl 文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/


    然后 pip install 包的名字.whl
    3.pandas的函数

    ①read_table() 读取数据,并整理成DataFrame类型的表格

    import pandas as pd
    unames = ['user_id','gender','age','occupation','zip']
    users = pd.read_table('users.dat',sep='::',header=None,names=unames)
    

    sep字段:指定分割符
    names字段:指定表格的表头
    其中users.dat (UserID::Gender::Age::Occupation::Zip-code)

    ②merge() 根据列名连接表格

    data=pd.merge(pd.merge(ratings,users),movies)
    

    其中
    users.dat (UserID::Gender::Age::Occupation::Zip-code)
    movies.dat (MovieID::Title::Genres)
    ratings.dat (UserID::MovieID::Rating::Timestamp)

    ③pivot_table() 聚合

    mean_ratings_by_gender = data.pivot_table(values='rating',index='title',columns='gender', aggfunc='mean')
    

    ④groupby() 分组

    ratings_by_title = data.groupby('title').size()
    active_titles = ratings_by_title.index[ratings_by_title>=250]
    #取评分数据大于250条的电影名称
    

    根据title进行分组,利用size()获得一个含有每个分组的大小的Series对象
    可能遇见报错见:http://blog.csdn.net/xiangweinn/article/details/78675369

    ⑤sort_index() /sort_values() 根据某列排序

    mean_ratings_by_gender.sort_index(by='F',ascending=False)
    mean_ratings_by_gender.sort_values(by='diff',ascending=True).head()
    

    根据 F / diff 列 降序/升序 排序

    ⑥std() 计算标准差

    #每个电影的得分标准差
    rating_std_by_title = data.groupby('title')['rating'].std()
    #根据标准差降序排列
    rating_std_by_title.order(ascending=False)[:10]
    
    4.pandas的数据结构

    pandas有两个主要的数据结构:Series 和 DataFrame

    ①Series类似于一维数组,有值有索引

    Numpy运算
    obj2[obj2 > 0] 筛选obj2中大于0的值
    obj2 *2 数值乘2
    np.exp(obj2) 计算e指数

    数据对齐功能,如果传入的所以在数据中找不到,就会填充NaN值
    Series对象本身及其索引都有一个name属性,索引可以通过以下方式修改:
    ②DataFrame是一个表格型的数据结构,每列可以是不同数据类型,既有行索引又有列索引。
    构建DataFrame
    通过字典标记的方式或者属性的方式,可以将DataFrame的列获取为一个Series: 获取第三行:
    使用Series为DataFrame精确赋值:
    为不存在的列赋值将会新建一列,del关键字删除列,对于嵌套字典,外层字典的键作为列,内层键则作为行索引。

    ③索引对象
    Index 对象是不可修改的,功能类似一个固定大小的集合

    Index的方法和属性
    方法 属性
    append 连接另一个Index对象,产生一个新的Index
    diff 计算差集,得到一个新的Index
    intersection 计算交集
    union 计算并集
    isin 计算一个指示各值是否都包含在参数集合中的布尔型数组
    delete 删除索引i处的元素,并得到新的Index
    drop 删除传入的值,并得到新的Index
    insert 将元素插入到索引i处,并得到新的Index
    is_monotonic 当各元素均大于等于前一个元素时,返回True
    is_unique 当Index没有重复值时,返回True
    unique 计算Index中唯一值的数组
    5.基本功能

    ①重新索引 reindex()


    reindex()的method选项



    ffill/pad: 前向填充(或搬运)值
    bfill/backfill:后向填充(或搬运)值


    注意到:只有当为frame重新索引(index不能为空)时,填充才生效!

    ②丢弃指定轴上的项 drop()



    对于DataFrame,可以删除任意轴上的索引值:


    ③索引、选取和过滤
    Series索引的工作方式类似Numpy数组的索引,只不过series的索引值不只是整数。且标签切片是包含末端的!


    在DataFrame的行上进行标签索引 ix[]


    ④算数运算和数据对齐
    Series\DataFrame对象相加时,没有重叠的位置就会产生NA值,解决方法:
    df1.add(df2,fill_value=0)
    df1.reindex(columns=df2.columns,fill_value=0)
    另外有:减法sub()、除法div()、乘法mul()

    ⑤DataFrame和Series之间的运算



    最后的方法是匹配行且在列上广播!

    ⑥函数应用和映射


    ⑦排序
    obj.sort_index() 根据Series的索引排序
    frame.sort_index()根据行名排序
    frame.sort_index(axis=1)根据列名排序
    obj.order() 根据值排序
    frame.sort_index(by='b')根据b列中的值排序
    frame.sort_index(by=['a','b'])根据a列和b列中的值排序

    没太看懂的rank()方法 *


    补充:轴标签(索引值)可以重复,例如obj=Series(range(5),index=['a','a','b','b','c'])

    6.汇总和计算

    ①描述和汇总统计

    方法 说明
    count 非NA 值的个数
    describe 针对Series或各DataFrame列计算汇总统计
    min\max 计算最小值、最大值
    argmin\argmax 计算最小值、最大值的索引位置(整数)
    idxmin\idxmax 计算最小值、最大值的索引值(标签)
    quantile 计算样本的分位数(0到1)
    sum 值的总和
    mean 值的平均值
    median 值的算数中位数(0.5)
    mad 根据平均值计算平均绝对离差
    var 样本值的方差
    std 样本值的标准差
    skew 样本值的偏度(三阶矩)
    kurt 样本值的峰度(四阶矩)
    cumsum 样本值的累计和,把上一行累计到下一行,依次类推
    cummin\cummax 累计最小值和最大值,第n行的值是前n行该列的最值
    cumprod 样本值的累计积
    diff 计算一阶差分(对时间序列很有用)
    pct_change 计算百分数变化

    对于Series对象obj,obj.sum()返回一个数值结果。
    对于DataFrame对象df,df.sum()返回一个Series,每个值是某一列(纵向)的和;而df.sum(axis=1)返回的Series,每个值是某一行的和。
    同理,对于mean()方法等,默认的都是纵向计算,计算列!


    ②唯一值、值计数


    7.处理缺失数据

    ①过滤缺失数据


    对于DataFrame对象,dropna()默认丢弃任何含有缺失值的行,传入how='all'将只丢弃全为NA的那些行。


    ②填充确实数据fillna()



    fillna()函数的参数

    参数 说明
    value 用于填充缺失值的标量值或字典对象
    method 填充方式,如ffill\bfill
    limit 前向和后向填充的的最大数量,和method配合使用
    axis 待填充的轴
    inplace 修改调用者对象而不产生副本,如上图
    8.层次化索引

    ①定义
    层次化索引使你在一个轴上拥有多个索引级别



    多层索引的Series对象可以移植到一个DataFrame对象上


    ②重排分级顺序swaplevel()
    重新调整某条轴上各级别的顺序,或根据指定级别上的值对数据进行排序

    ③根据级别做汇总统计:level字段


    ④使用DataFrame的列
    将DataFrame的一个或多个列当作行索引来用,或者希望将行索引变成DataFrame的列,怎么实现呢?


    相关文章

      网友评论

        本文标题:pandas笔记

        本文链接:https://www.haomeiwen.com/subject/gcpyxftx.html