pandas这么多实用又常用的技能,还不快快收藏起来
Posted 报告,今天也有好好学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas这么多实用又常用的技能,还不快快收藏起来相关的知识,希望对你有一定的参考价值。
大家好,我是老吴,大家也可以叫我吴同学,再小一点的朋友也可以叫我吴师兄。欢迎大家跟我一起走进数据分析的世界,一起学习!
感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦。
前期回顾:
学习pandas全套代码【超详细】数据查看、输入输出、选取、集成、清洗、转换、重塑、数学和统计方法、排序
学习pandas全套代码【超详细】分箱操作、分组聚合、时间序列、数据可视化
自从我整理完这两篇关于pandas的博文之后,我从博文的阅读以及收藏的数据中不难得知,大家对于这类实用性的博文的认可,同时我自己在工作中有时也会发现,即使我整理了这么多有关于pandas的内容,但或多或少还是会遗漏一些知识点,毕竟pandas实在是太多实用的功能了。
那么今天这篇博文呢,我进一步整理了前面这两篇博文没有提到的或者说讲的不够具体的实用技能,大家赶紧收藏起来吧,我保证你们迟早会用到。
1 输出表格的各种设定
1.1 指定sheet输出
df.to_excel('test.xlsx', sheet_name='laowu')
1.2 指定缺失值填充
df.to_excel('test.xlsx', na_rep='-')
1.3 无穷大表示法
df.to_excel('test.xlsx', inf_rep='inf')
1.4 浮点数字格式
# 小数点后保留两位小数
df.to_excel('test.xlsx', float_format="%.2f")
1.5 只输出指定列
df.to_excel('test.xlsx', columns=['column1', 'column2', 'column3'])
1.6 不带表头
# 不带表头
df.to_excel('test.xlsx', header=False)
1.7 不带索引
df.to_excel('test.xlsx', index=False)
1.8 指定索引
df.to_excel('test.xlsx', index_label=['team', 'name'])
1.9 选取特定范围的索引
# 从第几行,第几列开始
df.to_excel('test.xlsx', startrow=10, startcol=3)
1.10 指定编码
df.to_excel('test.xlsx', encoding='utf-8')
1.11 使用指定引擎
df.style.to_excel('test.xlsx', engine='openpyxl')
1.12 冻结指定行和列
df.to_excel('test.xlsx', freeze_panes=(0,3))
2 将多个dataframe保存到同一个表格下的不同sheet中
with pd.ExcelWriter(excel_name) as writer:
df_all.to_excel(writer, sheet_name='All ', index = 0, header = None)
df_tmall.to_excel(writer, sheet_name='天猫 (非猫超) ', index = 0, header = None)
df_super.to_excel(writer, sheet_name='天猫超市 ', index = 0, header = None)
df_jd.to_excel(writer, sheet_name='京东', index = 0, header = None)
df_pdd.to_excel(writer, sheet_name='拼多多', index = 0, header = None)
3 选取、修改或删除具有指定条件的数据
3.1 选取、修改或删除具有指定条件的行
a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
df=pd.DataFrame(a,index=['row0','row1','row2'],columns=list('ABC'))
# 选取
cond_1 = (df.B >= 5) & (df.C < 12)
df_1 = df[cond_1]
# 修改
cond_2 = (df.B >= 2) & (df.C < 12)
df.loc[cond_3, 'C'] = 0 # 满足条件的行数据中的C字段的值更改为0
# df.loc[cond_2] = 0 # 满足条件的全部字段的值都修改成0
# 删除
cond_3 = df['A'].isin([1, 7])
df_3=df[~cond_3]
- 要懂得活学活用,~这个符号用于取反,真的很实用。
- 同时,isin的功能虽然也可以用
|(或)
来实现,但效率却要远远高于|
。
3.2 选取、修改或删除具有指定条件的列
cols=[x for i,x in enumerate(df.columns) if df.iat[0,i]==3] #利用enumerate对row0进行遍历,将含有数字3的列放入cols中
# 选取某行含有特定数值的列
df_4=df[cols]
# 修改
df_5.loc[:, cols] = 0
# 删除
df_6 =df.drop(cols, axis=1) #利用drop方法将含有特定数值的列删除
3.3 删除含有空值的行或列
df1 = pd.DataFrame(
[
[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, np.nan, 4]
],columns=list('ABCD'))
print(df1)
df2=df1.copy()
df1['A']=df1['A'].fillna('null') #将df中A列所有空值赋值为'null'
# 删除某列空值所在行
df1=df1[~df1['A'].isin(['null'])]
# 删除某行空值所在列
df2[0:1]=df2[0:1].fillna('null')
cols=[x for i,x in enumerate(df2.columns) if df2.iat[0,i]=='null']
df2=df2.drop(cols,axis=1)
4 添加一行数据
df=DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'],columns=['c1','c2','c3','c4'])
# 第一种方法
df['e'] = [1, 2, 3, 4]
# 第二种方法
df_new = pd.DataFrame([5, 6, 7, 8]).T
## 修改df4的column和df3的一致,不修改的话会导致合并之后不在同一列上
df_new.columns = df.columns
## 把两个dataframe合并,需要设置 ignore_index=True
df = pd.concat([df, df_new], ignore_index=True)
5 修改数据类型
一般情况,我们是对某一列的数据进行数据类型的修改
5.1 对指定条件的数据进行修改
df['A'].astype('str')
df['B'].astype(np.float64)
# 满足特定条件
cond = df.A > 60
df.loc[cond, 'A'].astype('str')
5.2 对指定数据类型的数据进行修改
# 将int64数据类型的数据修改成int16
# 将float64数据类型的数据修改成float32
new_types = np.dtype(np.int64): np.int16,
np.dtype(np.float64): np.float32
df = df.astype(df.dtypes.map(new_types).to_dict())
6 数据表格美颜
df.style
这一部分如果要讲的话实在太多了,先给自己挖个坑吧。后面有需要可以再补充。
结束语
看完这篇,还有更多知识点分享给你哦,自己慢慢找哈,就在下面链接。
推荐关注的专栏
👨👩👦👦 机器学习:分享机器学习实战项目和常用模型讲解
👨👩👦👦 数据分析:分享数据分析实战项目和常用技能整理
往期内容回顾
💚 学习Python全套代码【超详细】Python入门、核心语法、数据结构、Python进阶【致那个想学好Python的你】
❤️ 学习pandas全套代码【超详细】数据查看、输入输出、选取、集成、清洗、转换、重塑、数学和统计方法、排序
💙 学习pandas全套代码【超详细】分箱操作、分组聚合、时间序列、数据可视化
💜 学习NumPy全套代码【超详细】基本操作、数据类型、数组运算、复制和试图、索引、切片和迭代、形状操作、通用函数、线性代数
关注我,了解更多相关知识!
CSDN@报告,今天也有好好学习
以上是关于pandas这么多实用又常用的技能,还不快快收藏起来的主要内容,如果未能解决你的问题,请参考以下文章