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

Pandas完全指南:数据处理与分析从入门到实战

目录

引言

一、Pandas环境配置与核心概念

1.1 安装Pandas

1.2 导入惯例

1.3 核心数据结构

二、数据结构详解

2.1 Series创建与操作

2.2 DataFrame创建

三、数据查看与基本操作

3.1 数据预览

3.2 索引与选择

3.3 数据排序

四、数据清洗实战

4.1 处理缺失值

4.2 处理重复值

4.3 数据类型转换

4.4 字符串处理

五、数据处理进阶

5.1 数据筛选

5.2 列操作

5.3 应用函数

六、数据分组与聚合

6.1 基础分组

6.2 聚合计算

6.3 透视表

七、数据合并与连接

7.1 纵向合并

7.2 横向合并

7.3 数据连接

八、时间序列处理

8.1 时间索引

九、数据可视化

9.1 内置可视化

9.2 结合Matplotlib

十、实战案例:电商数据分析

结语


引言

        Pandas是Python数据分析的核心库,提供了高效便捷的数据结构和数据分析工具。无论是数据清洗、转换、分析还是可视化,Pandas都能完美胜任。


一、Pandas环境配置与核心概念

1.1 安装Pandas

pip install pandas

1.2 导入惯例

import pandas as pd  # 行业标准缩写
import numpy as np   # 常配合使用

1.3 核心数据结构

  • Series:带标签的一维数组

  • DataFrame:二维表格型数据结构(核心)


二、数据结构详解

2.1 Series创建与操作

# 从列表创建
s = pd.Series([10, 20, 30, 40], 
              index=['a', 'b', 'c', 'd'],
              name='sales')

# 从字典创建
data = {'北京': 2154, '上海': 2428, '广州': 1867}
city_series = pd.Series(data)

# 常用操作
print(s.values)  # 值数组 [10 20 30 40]
print(s.index)   # 索引 Index(['a','b','c','d'])

2.2 DataFrame创建

# 从字典创建
data = {
    '城市': ['北京', '上海', '广州', '深圳'],
    '人口(万)': [2154, 2428, 1867, 1756],
    'GDP(万亿)': [3.92, 4.32, 2.82, 3.24]
}
df = pd.DataFrame(data)

# 从CSV文件创建
df = pd.read_csv('data.csv', encoding='utf-8')

# 从excel文件创建
df = pd.read_excel('data.xlsx', encoding='utf-8')
 

三、数据查看与基本操作

3.1 数据预览

df.head(3)     # 查看前3行
df.tail()      # 查看后5行(默认)
df.sample(5)   # 随机查看5行
df.describe()  # 数值型统计概览

3.2 索引与选择

# 列选择
df['城市']        # 单列 → Series
df[['城市','GDP']] # 多列 → DataFrame

# 行选择
df.loc[1]          # 按标签选择行
df.iloc[0:3]       # 按位置切片

# 布尔索引
df[df['人口'] > 2000]

3.3 数据排序

df.sort_values('GDP', ascending=False)  # 按GDP降序
df.sort_index(ascending=False)          # 按索引倒序
 

四、数据清洗实战

4.1 处理缺失值

# 识别缺失值
df.isnull().sum()

# 填充缺失值
df.fillna({'人口': df['人口'].mean()}, inplace=True)

# 删除缺失值
df.dropna(subset=['GDP'], inplace=True)

4.2 处理重复值

df.duplicated()          # 标记重复行
df.drop_duplicates()     # 删除重复行

4.3 数据类型转换

df['人口'] = df['人口'].astype(int)
df['日期'] = pd.to_datetime(df['日期'])

4.4 字符串处理

df['城市'] = df['城市'].str.upper()        # 转大写
df['地址'] = df['地址'].str.replace('市', '') # 替换字符
 

五、数据处理进阶

5.1 数据筛选

# 多条件筛选
df[(df['人口'] > 2000) & (df['GDP'] < 4)]

# 使用query方法
df.query("2000 < 人口 < 2500 and GDP > 3")

5.2 列操作

# 新增计算列
df['人均GDP'] = df['GDP'] / df['人口'] * 10000

# 重命名列
df.rename(columns={'人口(万)': '人口'}, inplace=True)

# 删除列
df.drop(columns=['序号'], inplace=True)

5.3 应用函数

def classify_gdp(value):
    if value > 4: return '高'
    elif value > 3: return '中'
    else: return '低'

df['GDP等级'] = df['GDP'].apply(classify_gdp)
 

六、数据分组与聚合

6.1 基础分组

# 按单列分组
grouped = df.groupby('地区')

# 按多列分组
grouped = df.groupby(['年份', '季度'])

6.2 聚合计算

agg_df = df.groupby('城市').agg({
    '人口': ['mean', 'max', 'min'],
    'GDP': 'sum'
})

6.3 透视表

pivot_df = pd.pivot_table(df, 
                         values='销售额',
                         index='地区',
                         columns='季度',
                         aggfunc=np.sum)
 

七、数据合并与连接

7.1 纵向合并

combined = pd.concat([df1, df2], axis=0)  # 行合并

7.2 横向合并

merged = pd.merge(df1, df2, 
                 on='ID', 
                 how='inner')  # 内连接

7.3 数据连接

joined = df1.join(df2.set_index('ID'), 
              on='ID', 
              how='left')
 

八、时间序列处理

8.1 时间索引

df['日期'] = pd.to_datetime(df['日期'])
df.set_index('日期', inplace=True)

# 按年统计
df.resample('Y').sum()

# 滑动窗口
df.rolling(window=7).mean()  # 7天移动平均
 

九、数据可视化

9.1 内置可视化

df.plot(kind='line', y='销售额', title='销售趋势')
df['GDP'].plot(kind='hist', bins=20)

9.2 结合Matplotlib

import matplotlib.pyplot as plt

plt.figure(figsize=(10,6))
df.groupby('城市')['人口'].mean().plot(kind='bar')
plt.title('各城市平均人口')
plt.show()
 

十、实战案例:电商数据分析

# 1. 数据加载
orders = pd.read_csv('orders.csv')
products = pd.read_csv('products.csv')

# 2. 数据合并
merged = pd.merge(orders, products, on='product_id')

# 3. 计算销售额
merged['sales'] = merged['quantity'] * merged['price']

# 4. 分析指标
daily_sales = merged.groupby('order_date')['sales'].sum()
top_products = merged.groupby('product_name')['sales'].sum().nlargest(5)

# 5. 可视化展示
daily_sales.plot(title='每日销售额趋势')
top_products.plot(kind='pie', autopct='%.1f%%')
 

结语

Pandas是数据分析领域的瑞士军刀,本文涵盖了其80%的常用功能。建议通过以下方式精进:

  1. 每天处理一个真实数据集

  2. 掌握高效查询方法(.query().eval()

  3. 深入理解分组聚合机制

  4. 学习性能优化技巧(向量化操作)


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

相关文章:

  • Netty源码—1.服务端启动流程一
  • 武汉临空港开发区第七批区级非物质文化遗产代表性项目和第四批非遗传承人申报条件流程和材料时间
  • 大模型如何赋能安全防御?威胁检测与漏洞挖掘的“AI革命”
  • 基于java的ssm+JSP+MYSQL的高校四六级报名管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • 【UE5 PuerTS笔记】PuerTS安装
  • 深度解析 | Android 13 Launcher3分页指示器改造:横线变圆点实战指南
  • 在 Ubuntu 下通过 Docker 部署 Nginx+PHP-FPM 服务器
  • 华为鲲鹏ARM服务器安装Docker
  • MySql面试总结(三)
  • C#的List和DIctionary实现原理(手搓泛型类以及增删查改等功能)
  • ABAP SQL模糊查询日期年月日方法
  • 【MySQL】基本查询(表的增删查改+聚合函数)
  • 【新能源汽车“心脏”赋能:三电系统研发、测试与应用匹配的恒压恒流源技术秘籍】
  • 【k8s系列】Kubernetes ReplicaSet 原理机制与基础应用要点
  • 【QT 多线程示例】两种多线程实现方式
  • Redis 面试思路
  • 【算法day15】最接近的三数之和
  • Spring Boot 启动参数终极解析:如何优雅地控制你的应用?
  • Unity Shader Graph高级节点逻辑设计:程序化噪声生成技术详解
  • 【后端】【Djagno】【ORM】models.ManyToManyField 多对多字段类型全解