pandas
- 基于Numpy和matplotlib的用于数据分析的库
和Numpy的区别是能更好的完成一些Numpy不好完成的工作,如numpy中的缺失值nan的处理
为什么学?
- 1.以上
- 2.可以存储,处理字符串类型的数据
- 3.对于数据量没那么大的情况(几十G,甚至1-2T),不必使用Hadoop和Spark,杀鸡焉用牛刀,pandas就可以很好的解决
核心
- Series:一维数组
- DataFrame:二维数组
二维数组
两个索引数组
- index:行索引
- columns:列索引
构造:
import numpy as np import pandas as pd d1 = pd.DateFrame(mp.arange(12).resjanpe(3,4))
属性:
- shape:结构
- dtypes:数据类型
- index:行索引
- columns:列索引
- values:值
- head(数字):查询前几个数据
- tail(数字):查询后几个数据
构造一个Seiries
# 1.指定内容,默认索引 s1 = pd.Seiries(np.arange(10)) # 2.指定索引 s1 = pd.Seiries([1,2,3,6,4], index=['a','b','c','d','e']) # 3.通过字典创建 s1 = pd.Seiris({'a':1,'b':2,'c':8})
- 获取索引值
- Seiries:
s1.[1:3:1]
,和列表的用法一样
基本操作
获取数据
pd.read_csv(file)
索引和切片
- 使用行列索引(先列后行)
d1['列索引名']['行索引名']
- 结合loc/iLoc使用索引
d.loc[起始行索引名:结束行索引名,起始列索引名:结束列索引名]
d.iloc[起始行索引值:结束行索引值,起始列索引值:结束列索引值]
排序
- 根据一个列名排序
d1.sort_values(by='列索引名')
- 根据多个列索引名排序,从前到后的顺序,前面一个索引名相同,然后在根据后面的一个索引名排序
d1.sort_value(by=['列索引名1','列索引名2','列索引名3'])
统计
- 基本统计分析函数
- .describe():针对0轴(列)的统计汇总
- .sum():计算数据的总和,按0轴计算
- .count():非Nan值数量
- .mean(),.median(),.mode():计算数据的算数平均值,中位数,众数
- .var(),.std():计算数据的方差/标准差
- 以下适用于series:
- .argmin(),.argmax():计算数据的最大值/最小值所在位置的索引值
- .idmin(),.idmax():计算数据的最大值/最小值所在位置的索引名
累计统计分析函数
- .cumsum():依次给出前1/2/3…/n个数的和,场景:计算股票的累计涨幅
- .cumprod():依次给出前1/2/3…/n个数的积
- .cummax():依次给出前1/2/3…/n个数的最大值
- .cummin():依次给出前1/2/3../n个数的最小值
逻辑条件进行数据筛选
- <,>等:
d1[d1.['列名'>5]]
- &,|:
d1[(d1['列名1']>5)&(d1['列名2']<10)]
- <,>等:
算数运算
- .add(d,**args):类型间加法运算
- .sub(d,**args):类型间减法运算
- .mul(d,**args):类型间乘法运算
- .div(d,**args):类型间除法运算
pandas数据读取
- 数据类型:CSV(常用),HDF5(常用),SQL,XLS,JSON…
- CSV:一种以文本格式呈现数据表的文件格式。适合存储一些小的文件
- HDF5:大文件,支持压缩,跨平台