欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Python中pandas组件学习总结

Python中pandas组件学习总结

2024/11/8 16:17:24 来源:https://blog.csdn.net/csy08845/article/details/143599924  浏览:    关键词:Python中pandas组件学习总结

pandasPython 中非常强大的数据处理和分析库,广泛应用于数据清洗、数据分析和数据可视化等领域。它的主要数据结构是 Series(一维数组)和 DataFrame(二维数据表),提供了丰富的功能来处理各种格式的数据,pandas 是数据分析和处理的核心工具,掌握它的基本操作及优化技巧能大大提升工作效率。
1. pandas 基础概念

Series

Series 是 pandas 的一维数组,类似于 Python 中的列表,但它可以附带标签(索引),用于标识每个元素。

import pandas as pd# 创建 Series
data = [10, 20, 30, 40]
index = ['a', 'b', 'c', 'd']
series = pd.Series(data, index=index)print(series)输出:a    10
b    20
c    30
d    40
dtype: int64

DataFrame

DataFrame 是 pandas 中的二维数据结构,类似于一个表格,拥有行和列,能够保存不同类型的数据。

# 创建 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)print(df)输出:name  age         city
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago

2. pandas 核心操作

索引和切片

使用 loc[] 和 iloc[] 进行数据的访问。

•	loc[]: 基于标签(索引名)进行访问
•	iloc[]: 基于位置(索引位置)进行访问
# 使用 loc[] 根据标签进行访问
print(df.loc[0])  # 访问第一行数据(通过标签)# 使用 iloc[] 根据位置进行访问
print(df.iloc[1])  # 访问第二行数据(通过位置)

添加、删除列和行

•	df['new_column'] = ...:添加列
•	df.drop(...):删除行或列
# 添加新列
df['salary'] = [50000, 60000, 70000]
print(df)
# 删除列
df = df.drop(columns=['salary'])
print(df)
# 删除行
df = df.drop(index=1)
print(df)

数据筛选

通过条件筛选数据:

# 根据条件筛选数据
filtered_df = df[df['age'] > 30]
print(filtered_df)

数据排序

sort_values() 用于对数据进行排序。

# 根据某一列排序
df_sorted = df.sort_values(by='age', ascending=False)
print(df_sorted)
  1. pandas 数据清洗

缺失值处理

•	isna() / notna():检查缺失值
•	fillna():填充缺失值
•	dropna():删除缺失值
# 创建包含缺失值的 DataFrame
df_with_na = pd.DataFrame({'name': ['Alice', 'Bob', None],'age': [25, None, 35],'city': ['New York', 'Los Angeles', 'Chicago']
})
# 检查缺失值
print(df_with_na.isna())
# 填充缺失值
df_filled = df_with_na.fillna({'name': 'Unknown', 'age': df_with_na['age'].mean()})
print(df_filled)
# 删除缺失值
df_dropped = df_with_na.dropna()
print(df_dropped)

重复数据处理

•	duplicated():检查重复行
•	drop_duplicates():删除重复行
# 创建包含重复数据的 DataFrame
df_with_duplicates = pd.DataFrame({'name': ['Alice', 'Bob', 'Alice', 'Charlie'],'age': [25, 30, 25, 35],
})
# 检查重复行
print(df_with_duplicates.duplicated())
# 删除重复行
df_no_duplicates = df_with_duplicates.drop_duplicates()
print(df_no_duplicates)

4. pandas 聚合与分组

groupby

groupby 是 pandas 中强大的数据聚合工具。你可以按一个或多个列对数据进行分组,并对每个组应用聚合操作,如计算总和、均值等。

# 按 'city' 列分组并计算每组的平均年龄
grouped = df.groupby('city')['age'].mean()
print(grouped)
# 多列分组
grouped_multiple = df.groupby(['city', 'age']).size()
print(grouped_multiple)

聚合函数

可以使用 agg() 函数来进行更复杂的聚合操作。

# 使用 agg() 进行多种聚合
agg_result = df.groupby('city').agg({'age': 'mean', 'salary': 'sum'})
print(agg_result)

5. pandas 数据导入导出

读取文件

•	read_csv():读取 CSV 文件
•	read_excel():读取 Excel 文件
•	read_sql():从 SQL 数据库读取数据
# 读取 CSV 文件
df_csv = pd.read_csv('file.csv')
# 读取 Excel 文件
df_excel = pd.read_excel('file.xlsx')

保存文件

•	to_csv():保存为 CSV 文件
•	to_excel():保存为 Excel 文件
# 保存 DataFrame 为 CSV 文件
df.to_csv('output.csv', index=False)
# 保存 DataFrame 为 Excel 文件
df.to_excel('output.xlsx', index=False)
  1. pandas 高级功能

合并与连接

•	merge():根据某一列或多列进行合并
•	concat():按行或列拼接多个 DataFrame
# 合并 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value': [4, 5, 6]})

merged_df = pd.merge(df1, df2, on=‘key’, how=‘inner’) # 内连接
print(merged_df)

# 拼接 DataFrame
concatenated_df = pd.concat([df1, df2], axis=0)  # 按行拼接
print(concatenated_df)

透视表与交叉表

•	pivot_table():创建透视表
•	crosstab():创建交叉表
# 透视表
pivot_table = df.pivot_table(values='age', index='city', aggfunc='mean')
print(pivot_table)
# 交叉表
crosstab_result = pd.crosstab(df['city'], df['age'])
print(crosstab_result)

7. pandas 使用注意事项

性能优化

•	避免使用 for 循环:尽量避免使用 for 循环逐行处理 DataFrame,而是利用 pandas 内置的向量化操作。
# 推荐:向量化操作
df['age'] = df['age'] + 1
# 不推荐:使用循环
for index, row in df.iterrows():df.at[index, 'age'] = row['age'] + 1
•	避免使用 apply():虽然 apply() 可以实现自定义函数,但它比向量化操作慢,应尽量避免使用。

内存管理

•	pandas 对内存的消耗较大,特别是在处理大量数据时。可以使用 dtype 参数来优化内存占用。
# 优化内存占用
df = pd.read_csv('file.csv', dtype={'age': 'int32', 'salary': 'float32'})

日期时间处理

•	pandas 在处理日期和时间时非常强大,可以使用 pd.to_datetime() 来转换日期,使用 .dt 提取日期时间的各个部分。
# 转换为日期格式
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
# 提取日期的年、月、日
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day

总结
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com