常用Pandas操作(笔记整理)
目录
一、常用
1、创建DataFrame(数据导入)
2. 查看数据前⼏⾏(head)
3. 查看数据后⼏⾏(tail)
4. 查看数据基本信息(info)
5. 使⽤ value_counts 计算唯⼀值的频率
6. 描述性统计信息(describe)
7. 选择列
8. 选择多列
9. 选择⾏(loc)
10. 选择特定⾏和列(loc)
11. 多条件选择
12. 使⽤ at 和 iat 快速访问元素
13. 使⽤ isin 进⾏过滤
14. 使⽤ query 进⾏条件查询
15. 按列排序数据 (sort_values)
16. 使⽤ astype 进⾏数据类型转换
17. 处理缺失值(dropna)
18. 填充缺失值(fillna)
19. 使⽤ duplicated 和 drop_duplicates 处理重复值
20. 新增列
21. 删除列(drop)
22. 重命名列(rename)
23. 使⽤ replace 进⾏值替换
24. 使⽤ mask 进⾏条件替换
25. 分组统计(groupby、agg)
26. 使⽤ nlargest 和 nsmallest 获取最⼤和最⼩值
27. 合并 DataFrame(concat)
28. ⽇期时间处理(to_datetime)
29. 保存 DataFrame 到⽂件(to_csv)
30. 从⽂件加载数据到 DataFrame(read_csv)
31. 使⽤ apply 函数对列进⾏操作
32. 使⽤ map 函数进⾏值替换
33. 使⽤ cut 函数进⾏分箱处理
34. 使⽤ groupby 和 transform 进⾏组内操作
二、其他
1. 字符串处理(str)
2. 使⽤ pipe 进⾏链式操作(pipe)
3. 合并 DataFrame(基于键)(merge)
4. 透视表(pivot_table)
一、常用
1、创建DataFrame(数据导入)
使⽤字典创建 DataFrame
import pandas as pd
data = {'ID': [101, 102, 103, 104, 105],
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [25, 30, 22, 35, 28],
'Salary': [50000, 60000, 45000, 75000, 55000],
'Status': ['Active', 'Inactive', 'Active', 'Active', 'Inactive']}
df = pd.DataFrame(data)
2. 查看数据前⼏⾏(head)
df.head()
⽤于查看 DataFrame 的前⼏⾏,默认为前 5 ⾏。
3. 查看数据后⼏⾏(tail)
df.tail()
⽤于查看 DataFrame 的后⼏⾏,默认为后 5 ⾏。
运行结果:
4. 查看数据基本信息(info)
df.info()
提供 DataFrame 的基本信息,包括每列的⾮空值数量和数据类型。
运行结果:
5. 使⽤ value_counts 计算唯⼀值的频率
df['Column'].value_counts()
使⽤ value_counts 计算某列中每个唯⼀值的频率。
运行结果:
6. 描述性统计信息(describe)
df.describe()
# 常用
df.describe([0.01, 0.1, 0.25, 0.5, 0.75, 0.9, 0.99]).T
提供 DataFrame 的描述性统计信息,包括均值、标准差、最⼩值、25%分位数、中位数(50%分位数)、75%分位数和最⼤值。
运行结果:
7. 选择列
df['ColumnName']
通过列名选择 DataFrame 中的⼀列。
8. 选择多列
df[['Column1', 'Column2']]
通过列名列表选择 DataFrame 中的多列。
运行结果:
9. 选择⾏(loc)
df.loc[index]
通过索引标签选择 DataFrame 中的⼀⾏。
运行结果:
10. 选择特定⾏和列(loc)
df.loc[index, 'ColumnName']
通过索引标签和列名选择 DataFrame 中的特定元素。
运行结果:
11. 多条件选择
df[(df['Column1'] > value1) & (df['Column2'] == value2)]
使⽤逻辑运算符(& :与,|:或,~:⾮)结合多个条件进⾏过滤。
运行结果:
12. 使⽤ at 和 iat 快速访问元素
df.at[index, 'ColumnName']
df.iat[index, columnIndex]
使⽤ at 和 iat 快速访问DataFrame中的元素。
运行结果:
13. 使⽤ isin 进⾏过滤
df[df['Column'].isin(['value1', 'value2'])]
使⽤ isin 过滤包含在给定列表中的值的⾏。
运行结果:
14. 使⽤ query 进⾏条件查询
df.query('Column > value')
使⽤ query 进⾏条件查询。
运行结果:
15. 按列排序数据 (sort_values)
df.sort_values(by='ColumnName', ascending=False)
# ascending:True升序,False降序
根据指定列的值进⾏升序或降序排序。
运行结果:
16. 使⽤ astype 进⾏数据类型转换
df['NewColumn'] = df['Column'].astype(float)
使⽤ astype 将列的数据类型转换为指定类型。
17. 处理缺失值(dropna)
df.dropna()
删除包含缺失值的⾏。
运行结果:
18. 填充缺失值(fillna)
df.fillna(value)
⽤指定值填充缺失值。
# 使用均值填充缺失值
df.fillna(df.mean())
19. 使⽤ duplicated 和 drop_duplicates 处理重复值
df.duplicated(subset=['Column1', 'Column2'])
df.drop_duplicates(subset=['Column1', 'Column2'], keep='first')
# keep 'first'(默认):保留每个重复组中的第一个出现的行。
# 'last':保留每个重复组中的最后一个出现的行。
使⽤ duplicated 检测重复值,使⽤ drop_duplicates 删除重复值。
运行结果:
20. 新增列
df['NewColumn'] = values
新增⼀列,并为其赋值。
运行结果:
21. 删除列(drop)
df.drop('ColumnName', axis=1)
删除指定列。
运行结果:
22. 重命名列(rename)
df.rename(columns={'OldName': 'NewName'}, inplace=True)
重命名指定列。
运行结果:
23. 使⽤ replace 进⾏值替换
df.replace({'OldValue': 'NewValue'})
使⽤ replace 替换DataFrame中的值。
运行结果:
24. 使⽤ mask 进⾏条件替换
df['NewColumn'] = df['Column'].mask(df['Condition'])
使⽤ mask 根据条件替换值。
运行结果:
25. 分组统计(groupby、agg)
df.groupby('ColumnName').agg({'Column1': 'mean', 'Column2': 'sum'})
按照指定列进⾏分组,然后进⾏聚合统计。
运行结果:
26. 使⽤ nlargest 和 nsmallest 获取最⼤和最⼩值
df.nlargest(5, 'ColumnName')
df.nsmallest(5, 'ColumnName')
使⽤ nlargest 获取最⼤值,使⽤ nsmallest 获取最⼩值。
运行结果:
27. 合并 DataFrame(concat)
pd.concat([df1, df2], axis=0)
沿着指定轴合并两个 DataFrame。
# axis=0:垂直合并两个DataFrame
# axis=1:水平合并两个DataFrame
pd.concat([df1, df2], axis=0)
28. ⽇期时间处理(to_datetime)
df['DateTimeColumn'] = pd.to_datetime(df['DateTimeColumn'])
将字符串列转换为⽇期时间类型。
format 参数符号 | 说明 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%M | 分钟数(00-59) |
%S | 秒(00-59) |
%j | 年内的一天(001-366) |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
29. 保存 DataFrame 到⽂件(to_csv)
df.to_csv('filename.csv', index=False)
将 DataFrame 保存为 CSV ⽂件。
30. 从⽂件加载数据到 DataFrame(read_csv)
df = pd.read_csv('filename.csv')
从⽂件中加载数据到DataFrame 。
31. 使⽤ apply 函数对列进⾏操作
df['NewColumn'] = df['Column'].apply(lambda x: x * 2)
使⽤ apply 函数 对某列的每个元素进⾏操作,可传递⾃定义函数。
运行结果:
32. 使⽤ map 函数进⾏值替换
df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})
使⽤ map函数 根据字典或函数替换列中的值。
运行结果:
33. 使⽤ cut 函数进⾏分箱处理
df['AgeGroup'] = pd.cut(df['Age']
,bins=[20, 30, 40, 50]
,labels=['20-30', '30-40', '40-50'])
使⽤ cut 函数将数值列分成不同的箱⼦,⽤标签表示。
运行结果:
34. 使⽤ groupby 和 transform 进⾏组内操作
df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')
使⽤ groupby 和 transform 在组内进⾏操作,并将结果⼴播到原始 DataFrame。
二、其他
1. 字符串处理(str)
df['StringColumn'].str.method()
对字符串列进⾏各种处理,如切⽚、替换等。
2. 使⽤ pipe 进⾏链式操作(pipe)
df.pipe(func1).pipe(func2, arg1='value').pipe(func3)
使⽤ pipe 进⾏链式操作,将多个操作组合在⼀起。
3. 合并 DataFrame(基于键)(merge)
pd.merge(df1, df2, on='KeyColumn', how='inner')
使⽤指定列进⾏合并,指定合并⽅式(内连接、左连接、右连接、外连接)。
4. 透视表(pivot_table)
pd.pivot_table(df, values='ValueColumn', index='IndexColumn', columns='ColumnToPivot', aggfunc='mean')
创建透视表,汇总数据。