pandas
2023-08-30 09:21:54 6 举报
AI智能生成
pandas 机器学习
作者其他创作
大纲/内容
pandas介绍
概念
是一个科学计算库, 专门用于数据挖掘
封装了numpy 和 matplotlib
数据更有表现力, 方便文件读写API
Series创建
作用
用于存储一维数据的结构
创建series
1. 直接创建, 自动生成从0开始索引
- Pd.Series(np.arange(num))
2. 创建指定索引
- Pd.Series(data, index=[1,2,3,4,5....])
3. 使用字典创建
- Pd.Series({"键":"值",….})
常用属性
- 索引: 对象.index
- 值: 对象.values
创建DataFrame
1. 创建DataFrame
- pd.DataFrame(data, index, columns)
1. Data: 数据
2. index: 行索引
3. Columns:列索引
2. 生成日期(了解)
- pd.date_range(start, end, periods, freq)
start: 起始日期
end: 结束日期
periods: 天数
freq: 默认一天挨着一天; 如果指定为'B' 跳过周六日
DataFrame结构
常见属性:
- 形状: shape
- 行索引: index
- 列索引: columns
- 数据的ndarray: values
- 转置: 对象.T
常见方法:
- 获取前5条数据: head()
- 获取后5条数据: tail()
索引的修改
Pd.index = index_new
注意:要修改索引, 必须整体进行修改, 不能够局部进行修改
重设索引
- API:dataframe.reset_index(key)
- drop: bool
- 注意:True删除原来索引, False保留
- 默认: False
以某列设置新的索引
Dataframe.set_index(key, drop)
- key: 索引名字或是索引名列表
- Drop:判断是否删除原索引列
MultiIndex与Panel
创建MultiIndex
API: pd.MultiIndex.from_arrays(array, names=[])
创建panel
创建: pd.Panel(data, items, major_axis, minor_axis)
- data: 表示数据
- items:最外层索引
- major_axis:中间层索引
- minor_axis:内层索引
注意: Panel[起始值:终止值, 起始值:终止值, 起始值:终止值] —切片
基本数据操作
索引操作
直接使用行列索引, 先列后行
Dataframe[列名] [行名]
先行后列, 名称索引
dataframe.loc[行名, 列名]
必须使用名称索引
先行后列, 数值索引
- dataframe.iloc(行号 , 列号)
- 必须使用下表索引
先行后列, 数值和名称索引混合使用
dataframe.ix[名称或者下标, 名称或者下标]
赋值操作
1. Dataframe['字段名'] = 值
2. dataframe.字段名 = 值
注意: 在给DataFrame添加一个新的列时候, 需要使用第一种方式
排序
series
值排序
Series.sort_values()
索引排序
Series.sort_index()
DataFrame排序
按照值进行排序
Dataframe.sort_values()
按照索引进行排序
dataframe.sort_index()
DataFrame运算
算术运算
直接使用: + - * /
推荐使用方法进行运算
- Dataframe.add()
- Dataframe.sub()
- Dataframe.mul()
- Dataframe.div()
逻辑运算
逻辑运算符号
- 比较: < > >= <= == !=
- 逻辑: 比较两边数据的逻辑大小
- 注意: 在使用 &, |的时候, 两边的比较运算符必须加小括号.
逻辑运算函数
1. 查询满足条件的数据
- dataframe.query(查询条件)
2. 判断数据是否在某个离散范围
- Dataframe.isin(范围)
统计运算
- 整体统计(数量, 均值, 方差, 最小值, 最大值): count mean var min max
- 统计函数: describe()
- 整体统计(描述)
- 最小值: min()
- 最大值: max()
- 众数: mode()
- 中位数: median()
- 均值: mean()
- 求和: sum()
- 获取索引函数
- 最大值索引: idxmax()
- 最小值索引: idxmin()
- 说明: 可以在DataFrame,Series上用.
- 注意: 所有的统计函数, 默认都是按列进行统计的.
累计统计函数
- 累计求和: cumsum()
- 累计最大值: cummax()
- 累计最小值: cummin()
- 累计求积: cumprod()
- 可以在DataFrame,Series上用
自定义运算
- Apply(func, axis=0, 1)
- 注意:可以在DataFrame可以用, 但是Series上不能用
Pandas画图(了解)
- Dataframe.plot(kind)
- x: x 轴
- y: y 轴
- kind: 图的种类:
- 折线图: line
- 柱状图(垂直): bar
- 柱状图(水平): barh
- 散点图: scatter
- 饼状图: pie
- 直方图: hist
文件读取与存储
- 操作CSV文件
- 读取csv文件
- pd.read_csv(path , sep, usecols)
- 写入csv文件
- Dataframe.to_csv(path, mode,...)
- 操作HDF5文件:
- 读取hdf文件
- pd.read_hdf(path, key)
- 写入hdf文件
- Dataframe.to_hdf(path, key)
- 注意: 在存储过程中, key值必须写
- 操作JSON文件
- 读取json文件
- pd.read_json(path, orient="样式", lines=True)
- orient: 存储的json形式
- lines: 行读取 True False 不按照行读取
- 写入json文件
- Dataframe.to_json(path, orient, lines)
高级操作
高级处理-缺失值处理
判断缺失值
- pandas中默认缺失值是: ?
1. 缺失值的位置为True, 其他位置False
- Dataframe.isnull()
- pd.isnull(df)
2. 不是缺失值的位置True, 缺失值位置False
- Dataframe.notnull()
- pd.notnull(df)
3. 判断是否包含缺失值(全局角度)
1. 如果为True, 就包含缺失值
- Np.any(df.isnull())
2. 如果为False, 包含缺失值
- np.all(df.notnull())
处理为nan的缺失值
1. 删除缺失值
- Df.dropna(axis)
- axis: 默认按行删除axis=0, 我们可以指定按列删除axis=1
2. 替换缺失值
- df.fillna(values, inplace=True)
- inplace: True 修改原来的元数据, False不修改元数据
处理不是Nan的缺失值
1. 将特殊字符处理为nan
- Df.replace(to_replace, values)
2. 缺失值的处理 删除 替换
高级处理-数据离散化
数据的离散化
- 把连续数据划分为若干个区间.
1. 按照每组元素个数近似相等的方式进行分组
pd.qcut(data, q)
2. 按用于指定区间进行分组
cut(data, bins)
3. 统计值的数量
series.value_counts()
one-hot编码(热编码, 哑变量)
API: pd.get_dummies(data, prefix=None)
高级处理-合并
- 表拼接
pd.concat([data1, data2],axis=0, 1)
- 表连接
pd.merge(left, right, how='inner', on=None)
高级处理-交叉表与透视表
交叉表
- API: pd.crosstab(index, columns)
- 先按index进行分组, 在按照columns进行分组
- 作用: 一列数据对于另一列数据的分组个数
透视表
API: dataframe.pivot_table(value, index)
- value: 需要统计的字段名
- index: 分组的字段名
高级处理-分组与聚合
分组
- DataFrame:
- Dataframe.groupby(分组的字段).聚合函数()
- Series:
- Series.groupby(分组数据).聚合函数()
0 条评论
下一页