博客
关于我
Pandas数据处理与分析教程:从基础到实战
阅读量:793 次
发布时间:2023-02-26

本文共 4332 字,大约阅读时间需要 14 分钟。

Pandas 是 Python 中最受欢迎的数据处理库之一,旨在为数据分析提供高效、灵活且易于使用的工具。以下将详细介绍其核心功能,包括数据结构、操作、可视化等内容。

1. 数据结构

Pandas 提供两种核心数据结构:SeriesDataFrame

  • Series:类似于 NumPy 的一维数组,支持标签化数据(即行标签)。

    import pandas as pd
    data = [1, 2, 3, 4, 5]
    s = pd.Series(data)
    print(s)

    输出结果:

    0    1
    1 2
    2 3
    3 4
    4 5
    dtype: int64
  • DataFrame:类似于 Excel 的二维表格,支持多种数据类型,方便数据操作。

    import pandas as pd
    data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'Country': ['USA', 'Canada', 'UK']
    }
    df = pd.DataFrame(data)
    print(df)

    输出结果:

    Name  Age Country
    0 Alice 25 USA
    1 Bob 30 Canada
    2 Charlie 35 UK

2. 数据安装与导入

安装 Pandas:

pip install pandas

导入库:

import pandas as pd

3. 数据读取与写入

Pandas 支持从多种数据源读取数据,包括 CSV、Excel 文件等。

从 CSV 文件读取数据

import pandas as pd
df = pd.read_csv('data.csv')
print(df)

从 Excel 文件读取数据

import pandas as pd
df = pd.read_excel('data.xlsx')
print(df)

写入 CSV 和 Excel 文件

import pandas as pd
data = {
'Name': ['John', 'Mary', 'Mark'],
'Age': [25, 30, 35],
'Country': ['USA', 'Canada', 'UK']
}
df.to_csv('data.csv', index=False)
df.to_excel('data.xlsx', index=False)

4. 数据操作

数据选择与索引

import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Country': ['USA', 'Canada', 'UK']
}
df = pd.DataFrame(data)
print(df['Name']) # 选择单列
print(df[['Name', 'Age']]) # 选择多列
print(df.loc[0]) # 选择行
print(df.loc[[0, 2]]) # 选择多行
print(df[df['Age'] > 30]) # 根据条件筛选

数据切片与过滤

import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Country': ['USA', 'Canada', 'UK']
}
df = pd.DataFrame(data)
print(df.iloc[1:3, :]) # 切片
print(df[df['Age'] > 30]) # 过滤

数据缺失值处理

import pandas as pd
import numpy as np
data = {
'Name': ['Alice', np.nan, 'Charlie'],
'Age': [25, np.nan, 35],
'Country': ['USA', 'Canada', np.nan]
}
df = pd.DataFrame(data)
print(df.isnull()) # 查看缺失值
df_filled = df.fillna(0) # 填充缺失值
print(df_filled)

数据排序与排名

import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Country': ['USA', 'Canada', 'UK']
}
df = pd.DataFrame(data)
df_sorted = df.sort_values('Age')
print(df_sorted)
df['Rank'] = df['Age'].rank()
print(df)

5. 数据聚合与分组

import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Country': ['USA', 'Canada', 'UK']
}
df = pd.DataFrame(data)
grouped = df.groupby('Country')
agg_result = grouped['Age'].mean()
print(agg_result)

6. 数据可视化

Pandas 与 Matplotlib 结合提供数据可视化功能。

绘制线形图

import pandas as pd
import matplotlib.pyplot as plt
data = {
'Year': [2010, 2011, 2012, 2013, 2014],
'Sales': [100, 200, 150, 300, 250]
}
df = pd.DataFrame(data)
df.plot(x='Year', y='Sales', kind='line')
plt.show()

绘制柱状图

import pandas as pd
import matplotlib.pyplot as plt
data = {
'Year': [2010, 2011, 2012, 2013, 2014],
'Sales': [100, 200, 150, 300, 250]
}
df = pd.DataFrame(data)
df.plot(x='Year', y='Sales', kind='bar')
plt.show()

7. 高级应用

时间序列分析

import pandas as pd
dates = pd.date_range('2023-01-01', '2023-01-10')
data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=dates)
monthly_data = data.resample('M').sum()
print(monthly_data)

合并与连接数据

import pandas as pd
data1 = {
'Name': ['Alice', 'Bob'],
'Age': [25, 30]
}
df1 = pd.DataFrame(data1)
data2 = {
'Name': ['Charlie', 'Dave'],
'Age': [35, 40]
}
df2 = pd.DataFrame(data2)
df_merged = pd.concat([df1, df2])
print(df_merged)

8. 数据透视表

import pandas as pd
data = {
'Product': ['Phone', 'Laptop', 'Phone', 'Laptop'],
'Price': [100, 900, 120, 1100],
'Sales': [50, 200, 60, 300]
}
df = pd.DataFrame(data)
pivot_table = pd.pivot_table(df, values=['Price', 'Sales'], index='Product', columns='Sales', aggfunc='sum')
print(pivot_table)

9. 实战案例:分析销售数据

代码解析

import pandas as pd
df = pd.read_csv('sales_data.csv')
print(df.head())
print(df.info())
print(df[['Sales', 'Profit']].describe())
category_sales_profit = df.groupby('Category')[['Sales', 'Profit']].sum()
print(category_sales_profit)
df['OrderDate'] = pd.to_datetime(df['OrderDate'])
df['Month'] = df['OrderDate'].dt.month
monthly_sales_profit = df.groupby('Month')[['Sales', 'Profit']].sum()
print(monthly_sales_profit)

CSV 数据示例

OrderDate Category Sales Profit
2021-01-01 Electronics 100 10
2021-01-02 Fashion 200 20
2021-01-03 Electronics 150 15
2021-02-01 Fashion 300 30
2021-02-02 Clothing 250 25

转载地址:http://dvvfk.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
查看>>
OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
查看>>
Opencv中KNN背景分割器
查看>>
OpenCV中基于已知相机方向的透视变形
查看>>
opencv保存图片路径包含中文乱码解决方案
查看>>
opencv图像分割2-GMM
查看>>
OpenCV(1)读写图像
查看>>
OpenCV:概念、历史、应用场景示例、核心模块、安装配置
查看>>
Openlayers中点击地图获取坐标并输出
查看>>
Openlayers图文版实战,vue项目从0到1做基础配置
查看>>
Openlayers实战:modifystart、modifyend互动示例
查看>>
Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
查看>>
Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
查看>>
Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
查看>>
Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
查看>>
openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
查看>>
OpenLDAP(2.4.3x)服务器搭建及配置说明
查看>>
OpenLDAP编译安装及配置
查看>>
OpenMCU(一):STM32F407 FreeRTOS移植
查看>>