1. pandas之文件读取
1.1 csv
- pandas.read_csv(filepath, sep =',', usecols=None )
- 读取csv类型文件
- usecols:读取指定列
- 返回值:Dataframe对象
- dataFram.to_csv(filepath,sep=',',columns=None,header=True,index=True,mode='w',encoding=None)
- columns:指定哪些列要写入文件
- header:列索引是否写入文件
- index:行索引是否写入文件
- mode:文件写入模式
- encoding:编码方式
2. pandas之数据处理
2.1 pandas关于数据处理的方法
- pd.isnull(dataframe)
- pd.notnull(dataframe)
2.2 datafram实例中处理缺失数据的方法
- data[i].fillna(value=data[i].mean(),inplace=True)
- data.dropna(axis='rows')
- data.replace(to_replace,value=np.NaN)
2.3 利用pandas将数据离散化
- pd.qcut(data,q)
- 将data的值域划分为q个区间,使得每个区间上出现包含data的元素尽可能相同
- data:一维数组,数值类型。
- q:分组个数
- 返回值:是个Series。index是data的index,value是data[index]所处的区间
- pd.cut(data,bins)
- data:同上
- bins:一个列表,表示自定义的data的值域区间
- 返回值:是个Series。index是data的index,value是data[index]所处的区间
# 自己指定分组区间
bins = [-100, -7, -5, -3, 0, 3, 5, 7, 100]
p_counts = pd.cut(p_change, bins)
- pd.get_dummies(data,prefix=None)
- 将data数据变为one-hot编码
- data:要求一维数组
- 返回值:是一个Dataframe对象。列索引代表data元素可能的取值。行索引就是data的index
2.4 利用pandas实现数据合并
- pd.concat([data1,data2],axis=0)
- data1,data2是Series对象或Dataframe对象
- 默认垂直方向上拼接(axis=0)
- pd.merge(left,right,how='inner',on=None)
- 只能进行水平连接,类似于数据库连接查询
- left:第一个Dataframe
- right:第二个dataframe
- how:以什么方式连接
- left:左外连接
- right:右外连接
- outer:全连接
- inner:内连接
- on:连接的字段,连接字段可以多个(多个就用list封装)
2.5 利用pandas进行分组聚合
- dataframe.groupby(key,as_index=True)
- 按哪一列或哪几列作为分组条件(类比数据库分组)
- 是否将key作为index
col.groupby(['color'])['price1'].mean()
col['price1'].groupby(col['color']).mean()
# 设置多个索引,set_index()
starbucks.groupby(['Country', 'State/Province']).count()
2.6 交叉表与透视表
- pd.crosstab(series1,series2)
- 查看两列数据的关系
- series1与series2是Series类型,需要有相同的index
- 返回一个Dataframe
- 其实本质就是按(series1,series2)进行分组,在统计每个分组的count
- dataframe.pivot_table([key1,key2],index=[])
- 在dataframe中,以index作为行索引,查看key1列与key2列的关系。
- 本质跟交叉表类似
- 返回一个Dataframe对象