温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Pandas的功能及用法

发布时间:2021-08-23 02:59:32 来源:亿速云 阅读:463 作者:chen 栏目:大数据
# Pandas的功能及用法 ## 一、Pandas概述 ### 1.1 什么是Pandas Pandas是一个开源的Python数据分析库,提供了高性能、易用的数据结构和数据分析工具。名称"Pandas"源自"Panel Data"(面板数据)和"Python Data Analysis"(Python数据分析)的组合。由Wes McKinney于2008年开发,现已成为Python数据科学生态系统的核心组件。 ### 1.2 主要特点 - **DataFrame结构**:类似电子表格的二维数据结构 - **时间序列处理**:强大的日期/时间功能 - **数据清洗**:处理缺失值、异常值等 - **数据整合**:合并、连接、重塑数据集 - **高效I/O**:支持多种文件格式读写 - **分组聚合**:灵活的数据分组和聚合操作 ### 1.3 安装与导入 ```python # 安装 pip install pandas # 常规导入方式 import pandas as pd 

二、核心数据结构

2.1 Series

一维带标签数组,可存储任何数据类型

# 创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) # 基本操作 print(s.index) # 获取索引 print(s.values) # 获取值 print(s[2]) # 索引访问 

2.2 DataFrame

二维表格型数据结构,类似电子表格或SQL表

# 创建DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['NY', 'LA', 'Chicago']} df = pd.DataFrame(data) # 查看基本信息 print(df.shape) # 维度 print(df.columns) # 列名 print(df.dtypes) # 数据类型 

三、数据读取与写入

3.1 常见数据源支持

格式类型 读取方法 写入方法
CSV pd.read_csv() df.to_csv()
Excel pd.read_excel() df.to_excel()
JSON pd.read_json() df.to_json()
SQL pd.read_sql() df.to_sql()
HTML pd.read_html() df.to_html()

3.2 示例代码

# 读取CSV df = pd.read_csv('data.csv', encoding='utf-8') # 读取Excel df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 写入文件 df.to_csv('output.csv', index=False) 

四、数据查看与选择

4.1 数据查看方法

df.head() # 前5行 df.tail(3) # 后3行 df.sample(5) # 随机5行 df.describe() # 统计摘要 df.info() # 内存和类型信息 

4.2 数据选择方法

按标签选择

df.loc[0] # 选择第一行 df.loc[:, 'Name'] # 选择Name列 df.loc[0:2, 'Name':'Age'] # 行和列切片 

按位置选择

df.iloc[0] # 第一行 df.iloc[:, 1] # 第二列 df.iloc[0:2, 1:3] # 行列切片 

布尔索引

df[df['Age'] > 30] # 年龄大于30 df[(df.Age > 25) & (df.City == 'NY')] # 多条件 

五、数据清洗与预处理

5.1 处理缺失值

# 检测缺失值 df.isnull().sum() # 处理方法 df.dropna() # 删除含缺失值的行 df.fillna(0) # 用0填充 df.fillna(df.mean()) # 用均值填充 

5.2 类型转换

df['Age'] = df['Age'].astype('float') # 转为浮点型 pd.to_datetime(df['Date']) # 转为日期类型 

5.3 重复值处理

df.duplicated() # 检测重复行 df.drop_duplicates() # 删除重复行 

5.4 数据替换

df.replace({'NY': 'New York'}, inplace=True) # 值替换 df['Gender'].map({'M': 'Male', 'F': 'Female'}) # 映射替换 

六、数据变形与操作

6.1 排序

df.sort_values('Age', ascending=False) # 按年龄降序 df.sort_index(ascending=True) # 按索引排序 

6.2 添加/删除列

df['NewCol'] = df['Age'] * 2 # 添加新列 df.drop('NewCol', axis=1) # 删除列 

6.3 数据透视

# 简单透视表 pd.pivot_table(df, values='Age', index='City', aggfunc='mean') # 复杂透视表 pd.pivot_table(df, values=['Age','Salary'], index=['City','Gender'], aggfunc={'Age':'mean', 'Salary':'sum'}) 

6.4 数据合并

# 纵向合并 pd.concat([df1, df2], axis=0) # 横向合并 pd.concat([df1, df2], axis=1) # SQL风格合并 pd.merge(left, right, on='key', how='inner') 

七、分组与聚合

7.1 基本分组操作

grouped = df.groupby('City') # 按城市分组 grouped.groups # 查看分组 

7.2 聚合函数

# 单列聚合 df.groupby('City')['Age'].mean() # 多列多聚合 df.groupby('City').agg({ 'Age': ['mean', 'max', 'min'], 'Salary': 'sum' }) 

7.3 转换与过滤

# 分组标准化 df['zscore'] = df.groupby('City')['Age'].transform( lambda x: (x - x.mean()) / x.std() ) # 分组过滤 df.groupby('City').filter(lambda x: x['Age'].mean() > 30) 

八、时间序列处理

8.1 时间类型创建

# 创建时间序列 dates = pd.date_range('20230101', periods=6) ts = pd.Series(np.random.randn(6), index=dates) 

8.2 时间索引操作

ts['2023-01'] # 选择1月数据 ts.truncate(before='2023-01-03') # 截断数据 ts.resample('M').mean() # 按月重采样 

8.3 时间偏移

ts.shift(2) # 向后移动2天 ts.tshift(freq='M') # 移动索引 

九、性能优化技巧

9.1 向量化操作

避免循环,使用内置方法:

# 差的方式 for i in range(len(df)): df.loc[i, 'NewCol'] = df.loc[i, 'Age'] * 2 # 好的方式 df['NewCol'] = df['Age'] * 2 

9.2 使用合适的数据类型

# 查看内存使用 df.memory_usage(deep=True) # 优化类型 df['Category'] = df['Category'].astype('category') 

9.3 分块处理大数据

# 分块读取 chunk_iter = pd.read_csv('large.csv', chunksize=10000) for chunk in chunk_iter: process(chunk) 

十、可视化集成

10.1 基本绘图

df.plot() # 线图 df.plot.scatter(x='Age', y='Salary') # 散点图 df['Age'].plot.hist(bins=20) # 直方图 

10.2 高级可视化

# 使用Seaborn集成 import seaborn as sns sns.boxplot(x='City', y='Age', data=df) # 多子图 df.plot(subplots=True, figsize=(10, 12)) 

十一、实际应用案例

11.1 销售数据分析

# 读取数据 sales = pd.read_excel('sales_data.xlsx') # 分析月销售额 sales['Date'] = pd.to_datetime(sales['Date']) monthly_sales = sales.resample('M', on='Date')['Amount'].sum() # 可视化 monthly_sales.plot(kind='bar') 

11.2 用户行为分析

# 计算用户留存 user_activity['date'] = pd.to_datetime(user_activity['timestamp']).dt.date retention = user_activity.groupby('user_id')['date'].nunique() # 留存率统计 (retention > 1).mean() # 7日留存率 

十二、常见问题与解决方案

12.1 性能问题

  • 问题:处理大数据时速度慢
  • 解决方案
    • 使用dtype参数指定类型
    • 考虑使用Dask或Modin等扩展库

12.2 内存问题

  • 问题:内存不足
  • 解决方案
    • 使用category类型减少字符串存储
    • 分块处理数据

12.3 编码问题

  • 问题:读取文件时编码错误
  • 解决方案
    • 尝试不同编码:’utf-8’, ‘gbk’, ‘latin1’
    • 使用chardet检测文件编码

十三、总结与资源推荐

13.1 Pandas优势总结

  1. 丰富的数据结构
  2. 强大的数据处理能力
  3. 优秀的性能表现
  4. 广泛的社区支持
  5. 与其他库的良好集成

13.2 学习资源推荐

13.3 未来发展

Pandas持续更新中,2.0版本带来了更好的性能、更丰富的类型系统等改进。建议关注: - 性能优化(特别是大数据处理) - 与其他生态系统的集成 - 新功能的持续加入


本文共约4300字,全面介绍了Pandas的核心功能和使用方法,从基础数据结构到高级分析技巧,涵盖了数据处理的完整流程。通过实际代码示例展示了Pandas的强大功能,是Python数据分析的必备工具。 “`

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI