美文网首页数据蛙数据分析每周作业
Pandas、Numpy和Matplotlib(知识点小结)

Pandas、Numpy和Matplotlib(知识点小结)

作者: 黑哥666 | 来源:发表于2018-12-23 19:52 被阅读7次

    一、Pandas

    1.1 文件读取

    import pandas as pd

    df=pd.read_csv("文件位置")

    1.2 DataFrame 和 Series

    创建: s=pd.Series(data,index=index)

        其中,data可以是:字典,数组,列表,整数的值,index可自定义或省略(即默认)

                p=pd.DataFrame(data,columns=...,index=...)

        其中,data可以是:字典,二维数组,series,dataframe

    1.3 常用的操作

    1.3.1 属性

    df.columns    查看列名

    df.index    查看索引

    df.dtypes    查看数据类型

    df.shape    返回列数和行数

    df.size    返回行数和列数的乘积

    1.3.2 方法

    df.head(N)    返回前N列

    df.tail(N)    返回后N列

    df.rename()       更改列名,括号内为字典格式,即 旧:新

    df.replace()    更改值

    df.value_counts()    返回不同的值及其出现的次数

    df.sort_values(by=...)    按...进行排序

    df.describe()    返回数值型变量的统计数据

    max/min/mean/sum    返回 最大值/最小值/平均值/和

    1.3.3 数据选取/添加/删除

    1.选取

    df['列名']     或      df.列名

    df[['列名1','列名2‘]]

    2.增加

    df.新增列名=值        或        df.新增列名=值

    条件筛选

    df[条件]

    3.删除

    del df['列名]

    1.4 Missing Value

    检测缺失值,返回布尔值

    pd.isnull(df)        或        pd.isnull(df.列名)

    删除缺失值

    df.dropna(axis=0或1)   

    填充缺失值

    df.fillna(value=填充内容)

    1.5 文本数据

    s是一个Series

    s.str.strip()    去除首尾空格

    s.str.upper()    变为大写

    综合运用:s[s.str.strip().str.endswith('a')]

    1.6    索引选取

    1.6.1 loc

    loc是基于标签的,允许的输入为:

        1.单个标签,如:5,'a'

        2.一个列表或标签数组,如: ['a','b','c']

        3.一个标签的切片,如: 'd' : 'f'

        4.一个布尔数组

        5.具有一个参数的可调用函数

    例:

        df.loc[0:5]    

        df.loc[1]

        df.loc[0,4,6]

        df.loc[条件]

    1.6.2 iloc

    iloc 是基于整数位置:

        1.一个整数 5

        2.一个整数列表[4,3,0]

        3.一个区间  1:7

        4.一个布尔数组

        5.具有一个参数的可调用函数

    loc与iloc的区别:

        loc选行是通过索引列的值来选取

        iloc选行是通过未至整数来选取

    例:

        df.loc[ :10 , ['列名1','列名2'] ]   

        df.iloc[ :10,  [0,1]]

        逗号后面为选择的列

    1.6.3    数据过滤(loc的应用)

        df.loc[过滤条件]

        类似于SQL中的where功能

    1.6.4 多重索引

    1.创建索引

    new_df=df.set_index(keys=['列名1','列名2'])

    其中,参数append=True表示保留原索引

               参数drop=True表示丢弃被设为索引的列

    删除索引    new_df.reset_index

    2.对索引排序

    new_df.sort_index(na_position='last',inplace=True)

    其中,参数na_position表示如果存在空值则放在最后

               参数inplace表示是否在原数据中保存更改

    3.用slice对多重索引进行操作

        例:

    new_df.loc[(slice(0,100),['索引列2值1','索引列2值2','索引列2值3'],slice(None)) ,  :  ]

    其中,前面分别是对三个索引列的操作,逗号后面是columns

    4. IndexSlice

         IndexSlice是一种更接近自然语法的用法,可以替换slice

    例: idx=pd.IndexSlice

    new_df.loc[idx[ : , : , : ], : idx['列名1','列名2']

    其中,逗号前面是对三个索引列的操作,逗号后面是对columns的操作,注意,逗号后面加上冒号返回的是一个表格,不加冒号返回一个列表

    1.7 分组计算

    三个步骤:1.根据一些标准将数据分组(spliting)

                       2.对分组数据作用一些函数(applying)

                       3.将结果组合返回一个数据结构,如DataFrame (combining)

    在第二个步骤中:1.aggregation:统计特征,如avg,max,min,sum

                                 2.transformation: 转换,如填充缺失值、标准化

                                 3.filtration:对组进行筛选

    分组:grouped=df.groupby('列名')

    grouped.size()    有多少组,每组有多少条数据

    grouped.groups    每组的详细情况

    len(grouped)    小组的个数

    1.7.1 统计计算

    1.单个统计量计算

     grouped.mean()

    grouped.sum()

    grouped.std()

    grouped['列名'].sum()

    2.使用agg函数进行多个统计量计算

    grouped.agg([np.mean,np.sum,np.std])

    3.不同的列应用不同的统计量

    grouped.agg({'列名1':np.mean,'列名2':np.sum,...})

    1.7.2 transformation

        对null填充值

    z_score=lambda s : (s-s.mean())/s.std()

    grouped[['列名1','列名2']].transform(z_score)

    1.7.3 filteration

    grouped.filter(lambda g : len(g) > 1)

    1.8 表联结

    1.8.1 结构完全一样的表

    result = pd.concat([df1,df2,df3])

    1.8.2  merge函数

    1.在一个主键上join

    result = pd.merge(left,right,how=left/right/outer,on='key')

    2. 在多个主键上join

    当两个表主键列名都为key1,key2时

    result = pd.merge(left,right,how=left/right/outer,on=['key1','key2'])

    当两个表主键列名分别为key1,key2和key3,key4时

    result = pd.merge(left,right,how=left/right/outer,left_on=['key1','key2'],right_on=['key3','key4'])

    注:主键位置要相对应

    3.在索引上join时

    key1,key2是left的索引列

    key1,key2是right的索引列

    result = pd.merge(left,right,how=left/right/outer,left_index=True,right_index=True)

    4.索引列和column join

    key1,key2 为left的索引列

    key1,key2 为right的columns

    result = pd.merge(left,right,how=left/right/outer,left_index=True,right_on=['key1','key2'])

    1.9  数据透视表

    1.9.1 pivot_table

    参数: data   数据源  ;   

                values    值  ;

                index  索引列(首列);

                columns    行;

                aggfunc     作用的函数;

    pd.pivot_table(df,values=['列名'],index=['列名'],aggfunc=[np.sum,np.std,...])    

    tips:未完待续、、、

    相关文章

      网友评论

        本文标题:Pandas、Numpy和Matplotlib(知识点小结)

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