Pandas数据分析库——详细解构
2024-10-14 22:53:11 0 举报
AI智能生成
Pandas是Python中的一个强大且灵活的数据分析库,广泛应用于数据操作和清洗、时间序列分析、统计分析和数据可视化等领域。它提供了一种灵活高效的数据结构——DataFrame,支持行列索引,类似于Excel的表格。DataFrame还支持加载和存储多种格式的数据文件,如CSV、Excel、JSON、HDF5等。此外,Pandas还内置了许多实用的函数,如数据排序、聚合、连接等,方便用户对数据进行处理和分析。通过Pandas,你可以进行复杂的数据分析任务,例如分组聚合、时间序列分析、缺失值填充、数据转换等。总的来说,Pandas是一个功能强大的数据分析工具,能够为数据科学家、分析师、开发人员等相关领域人员提供实质帮助。
作者其他创作
大纲/内容
Pandas
df.T
转置
多层索引
df.unstack(level = -1),level指定哪一层,0表示第一层,-1表示最后一层,默认是-1
行旋转成列
df.stack()
列旋转成行
df.mean(level = 0),level表示哪一层
多层索引的计算
8. 数据重塑
统计非空数据数量:df.count()
平均值:df.mean()
中位数:df.median()
求和:df.sum()
汇总统计:df.describe()
简单统计指标
最大值索引:df['Python'].argmax()
最小值索引:df['Python'].argmin()
最大值的标签:df.idxmax()
最小值标签:df.idxmin()
索引标签、位置获取
统计元素出现次数:df['Python'].value_counts()
去重:df['Python'].unique()
累加和:df.cumsum()
累乘和:df.cumprod()
累计最小值:df.cummin()
累计最大值:df.cummax()
标准差:df.std()
方差:df.var()
差分,即与上个数据相减:df.diff()
计算 百分比变化:df.pct_change()
协方差:df.cov() 两属性的协方差:df['Python'].cov(df['En'])
相关性系数:df.corr()
单一属性相关性系数:df.corrwith(df['Python'])
更多统计指标
9. 数学和统计方法
索引排序
列名排序
属性值排序
字符串排序
获取最大10个数据
获取最小10个数据
10. 排序
分箱操作就是将连续数据转换为分类对应物的过程,如将连续身高数据划分为矮中高
分箱操作也叫面元划分或者离散化,分为等距分箱和等频分箱
等距分箱
等频分箱
分箱后,可以直接.value_counts()来统计每份的数量
11. 分箱操作
先分组,再迭代获取数据
df.groupby(by = 'class')['Python']也可以写成df['Python'].groupby(df['class'])
多分组
按数据类型分组
通过字典进行分组
分组
分组直接调用函数进行聚合
df.groupby(by='sex').mean().round(1),根据sex分组,求平均值,保留一位小数
分组聚合
聚合结果变少
分组聚合apply
聚合结果和原数据shape一样
分组聚合transform
apply和transform只能计算一种统计,agg可以多种统计
不同列进行相同计算
不同列进行不同计算
分组聚合agg
类似于Excel透视表
透视表
12. 分组聚合
pd.Timestamp('2020-9-1 12'),表示2020年9月1日12点
时刻数据
时期数据
批量时刻数据
批量时期数据
创建方法
pd.to_datetime('2020.09.01'),将其他类型转换成日期类型2020-09-01
x + pd.DateOffset(days = 8),8天后时间
转换方法
时间戳操作
时间戳索引
ts['2020-09-01'],获取2020年9月1日的数据ts['2020-9'],获取2020年9月份数据ts['2020-9-15':'2020-9-20'],获取9月15到20日数据
str类型索引
ts[pd.Timestamp('2020-9-1')],[]中为时间戳操作
ts.index.year 获取年ts.index.dayofweek 获取一周中的第几天ts.index.weekofyear 获取一年中第几周
时间戳索引属性
ts.shift(periods=2),数据向后移动2
ts.shift(periods=-2),数据向前移动2
数据移动
日期移动
ts.asfreq(pd.tseries.offsets.Week()),变成周
不是累加值,只是获取数据
当由天变小时,因为是由少变多,则可以添加fill_value = 0来填充值
频率转换
日期为索引,就是根据日期维度分组聚合
ts.resample('2W').sum(),以2周为单位进行汇总
ts.resample('3M').sum().cumsum(),以季度为单位进行汇总
重采样
日期不是索引
DataFrame重采样
时间序列常用操作
13. 时间序列
df.cumsum().polt()
线形图
df.plot.bar(stacked = True),其中stacked表示是否堆叠
df.plot.barh()为条形图
柱状图/条形图
饼图
散点图
气泡图
df.plot.area(stacked = True)
面积图
df.plot.box()
箱式图
df.plot.hist()
直方图
14. 数据可视化
一维数组 ,比NumPy多了索引。
一种一维数据结构,类似于Python的列表,但带有索引标签。
解释
创建
Series
多个Series共用索引,类似Excel
不指定index就默认从0开始索引
DataFrame
1. 数据结构
查看DataFrame形状:df.shape
显示头部10行,默认5行:df.head(10)
显示末尾10行,默认5行:df.tail(10)
查看数据类型:df.dtypes
查看行索引:df.index
查看列索引:df.columns
返回NumPy数组:df.values
查看汇总统计,计数、平均值、标准差、最小最大值、四分位数:df.describe()
查看详细信息:df.info()
2. 数据查看
CSV
Excel
HDF5可以管理非常大和复杂的数据集,有两个概念:group和dataset,group是目录,dataset是数据集
HDF5
from sqlalchemy import create_engine,数据库引擎
engine = create_engine('mysql+pymysql://root:12345678@localhost/pandas?charset=utf8'),其中root为用户名,12345678为密码,pandas为数据库
SQL
3. 数据输入与输出
获取单列Series:df['Python']或者df.Python
行切片:df[3:5]
数据获取
标签选择:即行索引获取数据
位置选择:与标签选择类似,可以用数字
boolean索引
新增一列:df['Java'] = 151
df[df>=128] = -df,按照where条件进行赋值,将大于128的变成原来的负数
赋值操作
处理薪资(如25k-35k):job['salary'] = job['salary'].str.lower().str.extract(r'(\\d+)[k]-(\\d+)k').applymap(lambda x:int(x)).mean(axis=1)
4. 数据选取
concat数据串联
插入行:在最后一行 df1.append(df2),df1后面追加df2
如果想在指定位置插入行,先切割--添加--合并
数据插入
根据共同的属性来合并数据
Join SQL风格合并
5. 数据集成
判断是否存在重复数据:df.duplicated()
删除重复数据:df.drop_duplicates()
重复数据过滤
判断是否存在空数据:df.isnull()
删除空数据:df.dropna(),若只想删除某列的空数据,可以df.dropna(subset=[' '])
填充空数据:df.fillna(value=1111)
空数据过滤
直接删除某列:del df['color']
删除指定的行或列
df.reset_index(inplace= True)
行索引重置
只保留color列:df.filter(items = ['color'])
模糊匹配,保留带有i字母的索引df.filter(like = 'i')
函数filter
异常值过滤
6. 数据清洗
轴和元素转换
只能针对一列,没有对应的就返回空值
隐式函数映射:df['Python'].map(lambda x:True if x > 0 else False),如果大于0,返回True,否则返回False
显示函数映射:先定义一个convert函数,然后df['Python'].map(convert)
map映射Series转变
既支持Series,也支持DataFrame
操作Series:df['Python'].apply(lambda x:1 if x else 0),如果True,则为1,否则为0
操作DataFrame:df.apply(lambda x:x+1000),对所有数据进行+1000df.applymap(lambda x:x+1000)也可实现,不过applymap只支持DataFrame
支持显示函数映射
apply映射元素转变
与apply基本类似
transform元素转变
随机重排10个数:np.random.permutation(10)
重排DataFrame:df.take(np.random.permutation(10))
重排随机抽样哑变量
7. 数据转换
0 条评论
回复 删除
下一页