【Pandas驯化-05】Pandas中增、删、查、改、dropna、sort_values使用总结

【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 进行数据清洗和分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法驯化师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值