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

Pandas-5:数据分析与统计

本章将深入讲解Pandas在数据分析中的常用功能,包括基本统计描述、分组操作、数据聚合以及时间序列分析。

1.1 数据的基本统计描述

Pandas提供了丰富的统计方法,用于快速了解数据的分布和特性。

1.1.1 描述性统计

使用describe方法生成数据的基本统计信息。

import pandas as pd

data = {'Age': [25, 30, 35, 40], 'Score': [85, 90, 95, 100]}
df = pd.DataFrame(data)

# 生成描述性统计信息
print(df.describe())

输出

             Age     Score
count   4.000000   4.00000
mean   32.500000  92.50000
std     6.454972   6.45497
min    21.000000  81.00000
25%    28.750000  88.75000
50%    32.500000  92.50000
75%    36.250000  96.25000
max    40.000000 100.00000
1.1.2 常用统计方法

Pandas提供了直接计算统计指标的方法。

# 平均值
print(df['Age'].mean())

# 中位数
print(df['Score'].median())

# 标准差
print(df['Age'].std())

# 最大值和最小值
print(df['Score'].max(), df['Score'].min())

1.2 数据分组与聚合
1.2.1 分组操作

使用groupby方法按某列对数据进行分组。

data = {'Department': ['HR', 'IT', 'HR', 'IT'], 'Salary': [5000, 6000, 5500, 6500]}
df = pd.DataFrame(data)

# 按部门分组
grouped = df.groupby('Department')

# 查看分组后的数据
for name, group in grouped:
    print(name)
    print(group)
1.2.2 聚合操作

在分组的基础上进行聚合,使用agg方法灵活指定聚合方式。

# 计算各部门平均工资
average_salary = grouped['Salary'].mean()
print(average_salary)

# 使用多个聚合函数
aggregated = grouped['Salary'].agg(['mean', 'sum', 'max'])
print(aggregated)

1.3 数据的透视与交叉表
1.3.1 数据透视表

pivot_table提供了灵活的数据汇总方式。

data = {'Name': ['Alice', 'Bob', 'Alice', 'Bob'],
        'Month': ['Jan', 'Jan', 'Feb', 'Feb'],
        'Sales': [250, 300, 400, 350]}
df = pd.DataFrame(data)

# 创建透视表
pivot = df.pivot_table(values='Sales', index='Name', columns='Month', aggfunc='sum')
print(pivot)
1.3.2 交叉表

crosstab用于计算分类变量的频率分布。

# 创建交叉表
cross = pd.crosstab(df['Name'], df['Month'])
print(cross)

1.4 时间序列分析

Pandas内置了对时间序列数据的支持,便于处理日期和时间。

1.4.1 日期与时间操作

使用to_datetime方法将字符串转换为时间对象。

data = {'Date': ['2024-01-01', '2024-01-02', '2024-01-03'], 'Value': [100, 200, 150]}
df = pd.DataFrame(data)

# 转换为时间类型
df['Date'] = pd.to_datetime(df['Date'])

# 提取年、月、日
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['Day'] = df['Date'].dt.day
print(df)
1.4.2 时间序列索引

将时间列设置为索引,便于时间序列操作。

df.set_index('Date', inplace=True)

# 按时间范围筛选
filtered = df['2024-01-01':'2024-01-02']
print(filtered)
1.4.3 重采样与窗口操作

重采样和窗口操作可用于聚合或平滑时间序列数据。

# 按周重采样
weekly = df.resample('W').mean()
print(weekly)

# 滑动窗口计算
rolling = df['Value'].rolling(window=2).mean()
print(rolling)

1.5 高级数据分析操作
1.1.1 分组与多级索引

分组操作可以结合多级索引处理复杂数据。

data = {'Category': ['A', 'A', 'B', 'B'], 'SubCategory': ['X', 'Y', 'X', 'Y'], 'Value': [100, 150, 200, 250]}
df = pd.DataFrame(data)

# 按多列分组
grouped = df.groupby(['Category', 'SubCategory']).sum()
print(grouped)
1.1.2 自定义聚合函数

使用apply方法实现自定义聚合逻辑。

# 自定义函数
def range_func(x):
    return x.max() - x.min()

# 应用自定义聚合
result = grouped['Value'].apply(range_func)
print(result)

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

相关文章:

  • 代码随想录算法训练营第五十一天|Day51 图论
  • HarmonyOs鸿蒙开发实战(9)=>解析json数据,自动生成实体Bean插件-jsonFormat使用教程(铁粉福利)
  • ### 哋它亢在5G基站中的应用:新兴技术与未来通信的融合
  • React Native 全栈开发实战班 - 打包发布之热更新
  • 自动化运维-检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型等信息脚本
  • WebRTC实现双端音视频聊天(Vue3 + SpringBoot)
  • MongoDB的常用命令(数据库操作、集合操作、文档操作)
  • CentOS 7.9 搭建本地Yum源
  • 汽车科技前沿:Spring Boot资讯快车道
  • 深入解析【C++多态】:探索面向对象编程中的动态绑定与行为多样性和多态的核心概念与应用实践
  • ubuntu24.04网卡配置
  • 大连理工大学概率上机作业免费下载
  • 嵌入式串口通信
  • 《网络风险及网络安全》培训总结
  • html5复习一
  • ospf实验
  • 【MYSQL】什么是关系型数据库与非关系型数据库?
  • Spring Boot图书馆管理系统:疫情中的管理利器
  • 【重生之我要苦学C语言】C语言内存函数
  • 面向服务的软件工程——面向过程的系统分析:流程挖掘(week10)
  • ssh隧道代理访问内网应用
  • K8S containerd拉取harbor镜像
  • 【WPF】Prism学习(七)
  • 《Camera-free Image to PanoramaGeneration with Diffusion Model》论文解析——CamFreeDiff
  • 图像编辑一些概念:Image Reconstruction与Image Re-generation
  • chatgpt训练需要什么样的gpu硬件