您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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
一维带标签数组,可存储任何数据类型
# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
# 基本操作
print(s.index) # 获取索引
print(s.values) # 获取值
print(s[2]) # 索引访问
二维表格型数据结构,类似电子表格或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) # 数据类型
格式类型 | 读取方法 | 写入方法 |
---|---|---|
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() |
# 读取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)
df.head() # 前5行
df.tail(3) # 后3行
df.sample(5) # 随机5行
df.describe() # 统计摘要
df.info() # 内存和类型信息
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')] # 多条件
# 检测缺失值
df.isnull().sum()
# 处理方法
df.dropna() # 删除含缺失值的行
df.fillna(0) # 用0填充
df.fillna(df.mean()) # 用均值填充
df['Age'] = df['Age'].astype('float') # 转为浮点型
pd.to_datetime(df['Date']) # 转为日期类型
df.duplicated() # 检测重复行
df.drop_duplicates() # 删除重复行
df.replace({'NY': 'New York'}, inplace=True) # 值替换
df['Gender'].map({'M': 'Male', 'F': 'Female'}) # 映射替换
df.sort_values('Age', ascending=False) # 按年龄降序
df.sort_index(ascending=True) # 按索引排序
df['NewCol'] = df['Age'] * 2 # 添加新列
df.drop('NewCol', axis=1) # 删除列
# 简单透视表
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'})
# 纵向合并
pd.concat([df1, df2], axis=0)
# 横向合并
pd.concat([df1, df2], axis=1)
# SQL风格合并
pd.merge(left, right, on='key', how='inner')
grouped = df.groupby('City') # 按城市分组
grouped.groups # 查看分组
# 单列聚合
df.groupby('City')['Age'].mean()
# 多列多聚合
df.groupby('City').agg({
'Age': ['mean', 'max', 'min'],
'Salary': 'sum'
})
# 分组标准化
df['zscore'] = df.groupby('City')['Age'].transform(
lambda x: (x - x.mean()) / x.std()
)
# 分组过滤
df.groupby('City').filter(lambda x: x['Age'].mean() > 30)
# 创建时间序列
dates = pd.date_range('20230101', periods=6)
ts = pd.Series(np.random.randn(6), index=dates)
ts['2023-01'] # 选择1月数据
ts.truncate(before='2023-01-03') # 截断数据
ts.resample('M').mean() # 按月重采样
ts.shift(2) # 向后移动2天
ts.tshift(freq='M') # 移动索引
避免循环,使用内置方法:
# 差的方式
for i in range(len(df)):
df.loc[i, 'NewCol'] = df.loc[i, 'Age'] * 2
# 好的方式
df['NewCol'] = df['Age'] * 2
# 查看内存使用
df.memory_usage(deep=True)
# 优化类型
df['Category'] = df['Category'].astype('category')
# 分块读取
chunk_iter = pd.read_csv('large.csv', chunksize=10000)
for chunk in chunk_iter:
process(chunk)
df.plot() # 线图
df.plot.scatter(x='Age', y='Salary') # 散点图
df['Age'].plot.hist(bins=20) # 直方图
# 使用Seaborn集成
import seaborn as sns
sns.boxplot(x='City', y='Age', data=df)
# 多子图
df.plot(subplots=True, figsize=(10, 12))
# 读取数据
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')
# 计算用户留存
user_activity['date'] = pd.to_datetime(user_activity['timestamp']).dt.date
retention = user_activity.groupby('user_id')['date'].nunique()
# 留存率统计
(retention > 1).mean() # 7日留存率
dtype
参数指定类型category
类型减少字符串存储chardet
检测文件编码Pandas持续更新中,2.0版本带来了更好的性能、更丰富的类型系统等改进。建议关注: - 性能优化(特别是大数据处理) - 与其他生态系统的集成 - 新功能的持续加入
本文共约4300字,全面介绍了Pandas的核心功能和使用方法,从基础数据结构到高级分析技巧,涵盖了数据处理的完整流程。通过实际代码示例展示了Pandas的强大功能,是Python数据分析的必备工具。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。