美文网首页数据蛙数据分析每周作业
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