【Pandas驯化-05】Pandas中增、删、查、改、dropna、sort_values使用总结
本次修炼方法请往下查看
🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站
🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验。
🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100% 。
📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。
🌵文章目录🌵
下滑查看解决方法
🎯 1. 基本介绍
对于结构化的数据Dataframe,我们通常归纳为多少行,多少列,在通过Pandas对Dataframe进行数据分析、处理过程中,通过的操作需要对数据进行增、删、修、改、判断缺失值、以及排序、本文对pandas中的上述操作进行实践,总结实际工作中常用到的函数用法和技巧。
💡 2. 使用方法
2.1 DataFrame数据查找
- 切片方式: 类似python中list的操作方法: df[3:]
- iloc函数操作方法: df.iloc[:, [1,2,3]], 按照行列切片的方式进行选择数据
- loc函数操作方法: df.loc[:, ‘列名’], 行按照切片的方式进行选择,列要按照列名进行选择
- 按条件查找方法: df[条件], 例如查找为空的数:df[df[‘a’].isnull()],这里要注意一点的是,如果数据类型是Series格式的,它支持numpy那种数据过滤方法,例
如:df[df>3] - 这里有一点就是有时数据需要输出偶数列的数据,有用到这种写法df.iloc[::2, :],其中第一个里面为::2代表的意思是从开始到最后,每隔2输出数据。
import pandas as pd
import numpy as np
# 创建一个示例 DataFrame
df = pd.DataFrame({
'A': range(1, 6),
'B': range(6, 11),
'C': range(11, 16)
})
# 使用切片选择第三行之后的所有行
df_slice = df[3:]
print(df_slice)
# 使用 iloc 选择第二列和第三列
df.iloc[:, [1, 2]]
# 使用 loc 选择第一行和列 'B'
df.loc[0, 'B']
# 查找列 'A' 中大于3的所有行
df[df['A'] > 3]
# 选择偶数列
df.iloc[::2, :]
2.2 DataFrame数据插入
- 插入一行或一列数据:df.insert()
- 将表中数据的某个值替换为其它的值:df.replace(old, new)
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 在位置1插入一列新数据,列名为 'C',值为 [7, 8, 9]
df.insert(1, 'C', [7, 8, 9])
# 在位置2插入一行新数据,索引为2,值为 {'A': 4, 'B': 5, 'C': 10}
df.loc[2] = {'A': 4, 'B': 5, 'C': 10}
# 将列 'A' 中的所有 1 替换为 100
df['A'] = df['A'].replace(1, 100)
# 替换多个值,例如将列 'B' 中的 4 和 5 替换为 100 和 200
df['B'] = df['B'].replace([4, 5], [100, 200])
2.3 DataFrame数据空值NAN
真实的数据分析工作中,我们经常会碰到数据缺失的情况,这个时候需要对缺失的数据进行清洗,dataframe中使用dropna函数来对缺失数据进行处理
- 1.删除空值: df.dropna()
- 2.删除以行列数据: df.drop(),其中axis=0,1用于调节按行还是按列,如果想要批量的删除行数据,可参考操作:drop_index= df[条件].index.tolist(),df =df.drop(drop_index, axis=0)
- 3.按条件删除数据:df = df[条件]
import pandas as pd
import numpy as np
# 创建一个包含空值的 DataFrame
df = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': [np.nan, 2, 3, 4],
'C': [1, 2, 3, np.nan]
})
# 删除含有空值的行
df_dropped_rows = df.dropna(axis=0)
print(df_dropped_rows)
# 删除含有空值的列
df_dropped_columns = df.dropna(axis=1)
print(df_dropped_columns)
# 假设我们要删除索引为 [2, 3] 的行
drop_index = df.index.tolist()[2:4]
df_dropped_rows = df.drop(drop_index, axis=0)
# 假设我们要删除列 'B'
df_dropped_column = df.drop('B', axis=1)
2.3 DataFrame修改列名
- 1.df.rename({‘old_name’:’new_name’}, axis=1, inplace=True) 对文件的某些列进行重新命名
- 2.df.columns = [‘a’, ‘b’] 直接对整个文件的列进行重新命名
🔍 3. 高阶用法
3.1 sort_values对dataframe进行排序
- 对DataFrame类型的数据的行列进行排序: df.sort_values([‘a’, ‘b’, ‘c’], ascendig= [False, False, True] ), 对列a,b,c按照不同的排序方式进行排序。
import pandas as pd
# 创建示例数据
data = {'Movie': ['Movie A', 'Movie B', 'Movie C', 'Movie D'],
'Rating': [8.5, 9.0, 7.2, 8.7],
'Director': ['Director X', 'Director Y', 'Director Z', 'Director W']}
df = pd.DataFrame(data)
# 按照电影评分进行降序排序
sorted_df = df.sort_values(by='Rating', ascending=False)
print(sorted_df)
Movie Rating Director
1 Movie B 9.0 Director Y
3 Movie D 8.7 Director W
0 Movie A 8.5 Director X
2 Movie C 7.2 Director Z
3.1 fillna函数进行数据填充
数据分析真实场景中,缺失值的存在是不可明显存在的,对很多的算法不支持缺失数据的出现,因此,经常需要对缺失的数据进行填充,具体的填充方法为:
import pandas as pd
import numpy as np
# 创建示例数据
data = {'A': [1, np.nan, 3, 4],
'B': [5, 6, np.nan, 8]}
df = pd.DataFrame(data)
# 填充缺失值为指定值
filled_df = df.fillna(value=0)
print(filled_df)
# 使用列的统计值填充缺失值
mean_filled_df = df.fillna(value=df.mean())
print(mean_filled_df)
# 使用前一个有效值填充缺失值
ffill_filled_df = df.fillna(method='ffill')
print(ffill_filled_df)
A B
0 1.0 5.0
1 0.0 6.0
2 3.0 0.0
3 4.0 8.0
A B
0 1.0 5.0
1 2.7 6.0
2 3.0 6.3
3 4.0 8.0
A B
0 1.0 5.0
1 1.0 6.0
2 3.0 6.0
3 4.0 8.0
🔍 4. 注意事项
对上述的各个函数在使用的过程中需要注意的一些事项,不然可能会出现error,具体主要为:
- 切片操作时,行的索引默认从 0 开始,列的索引默认从 1 开始。
- 使用 iloc 和 loc 时,要确保索引的范围不会超出 DataFrame 的实际大小。条件查找时,确保条件表达式正确无误,并且适用于 DataFrame 中的数据类型。
- 使用 insert 方法时,如果插入的是列,需要确保指定的位置索引是正确的,并且列名不与现有列名冲突。
- 使用 replace 方法时,可以传递单个值对,也可以传递列表或字典来替换多个值。
- replace 方法默认只替换 exact 精确匹配的值。如果需要替换正则表达式匹配的值,可以设置 regex=True。
- 使用 dropna 方法时,可以通过 how 参数来指定删除规则,例如 how=‘any’ 删除任何包含空值的行或列,how=‘all’ 仅删除所有值都是空值的行或列。
- 使用 drop 方法时,如果指定了 inplace=True,则原 DataFrame 将被修改,而不是返回一个新的 DataFrame。
- 按条件删除数据时,确保条件表达式正确,并且适用于 DataFrame 中的数据类型。
🔧 5. 总结
本文介绍了 Pandas 中删除空值和满足特定条件的数据的方法。这些方法在数据清洗过程中非常关键,有助于提高数据分析的准确性和效率。通过实际的代码示例,我们可以看到这些操作是如何应用于实际的数据集上的。希望这篇博客能够帮助你更好地利用 Pandas 进行数据清洗和分析。