应用Pandas实现数据的读取和存储
纪要
5.1Pandas介绍
1.pandas概念
开源的数据挖掘库<br /> 用于数据探索<br /> 封装了matplotlib,numpy
2.案例知识点
1.创建DataFrame
pd.DataFrame(ndarray)
2.创建日期
pd.date_range()<br /> start -- 开始日期<br /> end -- 结束日期<br /> periods -- 时间跨度<br /> freq -- 统计时间方式
3.DataFrame介绍 — 类比二维数组[*]
1.dataframe属性
对象.shape<br /> 对象.index<br /> 对象.columns<br /> 对象.values<br /> 对象.T<br /> 对象.head()<br /> 对象.tail()
2.dataframe设置索引
1.修改行列索引
必须整行或者整列去进行修改
2.重设索引
对象.reset_index()
3.设置新索引
对象.set_index()<br /> 如果设置索引是两个的时候就是multiIndex
4.MultiIndex和panel — 类比三维数组[**]
1.MultiIndex
对象.index<br /> 对象.index.names
2.panel — 已经弃用,了解
直接没法进行查看里面的值,需要通过索引获取<br /> 对象[:, :, ""]
5.Series — 一维数组[**]
1.创建
通过ndarray创建<br /> 指定索引创建<br /> 通过字典创建
2.属性
对象.index<br /> 对象.values
5.2 基本数据操作
1.索引操作
1.直接 -- 先列后行<br /> 2.loc -- 先行后列,索引值<br /> 3.iloc -- 先行后列,索引值的下标<br /> 4.ix -- 先行后列,混合索引
2.赋值操作
1.对象[""]<br /> 2.对象.close
3.排序
1.dataframe<br /> 对象.sort_values()<br /> by -- 按照什么排序<br /> ascending -- 升降序<br /> 对象.sort_index()<br /> 注意:by这个参数可以接受多个值,优先按照第一个索引排序,如果相同,按照后面的<br /> 2.series<br /> 对象.sort_values()<br /> 对象.sort_index()
5.3 DataFrame运算
1.算术运算
直接使用方法, add, sub ...<br /> 也可以用符号
2.逻辑运算
2.1 逻辑运算符号<、 >、|、 &<br /> 直接判断<br /> 2.2 逻辑运算函数<br /> 对象.query("")<br /> 对象.isin([])
3.统计函数
对象.describe()<br /> 统计函数<br /> sum<br /> mean<br /> ...<br /> mode -- 众数<br /> idxmax -- 最大值的索引<br /> idxmin -- 最小值的索引
4.累计统计函数
函数 作用<br /> cumsum 计算前1/2/3/…/n个数的和<br /> cummax 计算前1/2/3/…/n个数的最大值<br /> cummin 计算前1/2/3/…/n个数的最小值<br /> cumprod 计算前1/2/3/…/n个数的积
5.自定义运算[*]
apply(func, axis=)<br /> func -- 自己定义的函数
5.4 Pandas画图
对象.plot()
kind —
line — 折线图
bar
barh — 条形图旋转
hist
pie
scatter
5.5 文件读取与存储
1.csv
1.读取-- pd.read_csv<br /> 参数:<br /> usecols -- 需要哪列<br /> 2.存储 -- 对象.to_csv<br /> 参数:<br /> columns -- 保存哪列
2.hdf
1.读取 -- pd.read_hdf()<br /> 2.写入 -- 对象.to_hdf()<br /> 注意:保存文件是****.h5
3.json
1.读取 -- pd.read_json()<br /> 2.写入 -- 对象.to_josn()<br /> 参数:<br /> orient -- 按照什么方式进行读取或者写入<br /> lines -- 是否按照行读取和写入
4.推荐使用hdf
1.压缩方式,读取效率快<br /> 2.压缩后,节省空间<br /> 3.支持跨平台
5.6 高级处理-缺失值处理[*]
判断数据是否为NaN:
np.any(pd.isnull(movie)) # 里面如果有一个缺失值,就返回True<br /> np.all(pd.notnull(movie)) # 里面如果有一个缺失值,就返回False
处理方式:
存在缺失值nan,并且是np.nan:<br /> 1、删除存在缺失值的:dropna(axis='rows')<br /> 注:不会修改原数据,需要接受返回值<br /> 2、替换缺失值:fillna(value, inplace=True)<br /> value:替换成的值<br /> inplace:True:会修改原数据,False:不替换修改原数据,生成新的对象
不是缺失值nan,有默认标记的
对象.replace()<br /> to_replace -- 替换前的值<br /> value -- 替换后的值
5.7 高级处理-数据离散化
1.什么是数据离散化
把一些数据分到某个区间,最后用不同的符号或者数字表达
2.数据离散化api
pd.qcut() -- 把数据大致分为数量相等的几类<br /> pd.cut() -- 指定分组间隔<br /> 数量统计:<br /> 对象.value_counts()
3.one-hot编码
就是把数据转换成为0,1统计类型<br /> 别名:哑变量,热独编码<br /> api:<br /> pd.get_dummies()
5.8 高级处理-合并
pd.concat()
axis=
pd.merge()
left — 左表
right — 右表
on — 指定键
how — 按照什么方式进行拼接
5.9 高级处理-交叉表与透视表
1.什么交叉表,透视表
就是探索两列数据之间的关系
2.pd.crosstab()
返回具体数量
3.对象.pivot_table()
返回占比情况
5.10 高级处理-分组与聚合
1.api
对象.groupby()<br /> 参数:as_index -- 是否进行索引<br /> 注意:可以对数据进行对此分组,需要里面传递一个列表进行完成.