当前位置: 首页 > article >正文

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

总结
在这里插入图片描述


http://www.kler.cn/a/384366.html

相关文章:

  • 【C/C++】strncpy函数的模拟实现
  • C语言复习第7章 自定义类型(结构体+位段+枚举+联合体)
  • 代码随想录刷题学习日记
  • Python 中的字符串匹配算法
  • 带你用Go实现二维码小游戏(下)
  • C语言必做30道练习题
  • 【Linux】进程间通信(匿/命名管道、共享内存、消息队列、信号量)
  • 【go从零单排】实现枚举类型(Enum)
  • PyCharm中 argparse 库 的使用方法
  • jenkins流水线pipeline
  • Netty篇(学习前言)
  • mysql常见的一些配置项
  • C#-拓展方法
  • iOS开发 swift系列---一个视图数据修改后,如何刷新另外一个视图
  • 多机器人图优化:2024ICARA开源
  • 服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例
  • 火山引擎云服务docker 安装
  • SpringBoot开发——8种读取配置文件信息的方式
  • 基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真
  • 【ArcGISPro】单次将自己建立的工具箱添加至Arcpy中
  • C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
  • MySQL limit offset分页查询可能存在的问题
  • FPGA高速设计之Aurora64B/66B的应用与不足的修正
  • 简单介绍一下mvvm mvc mvp以及区别、历史
  • Recyclerview缓存原理
  • Map函数与vector<pair<int,int>>函数的使用方法