Python-Pandas DataFrame 分组聚合与基础绘图

目录

​​一、Pandas DataFrame简介​​

​​二、数据加载与查看​​

1. 加载数据集

2. 查看数据属性

3. 查看部分数据

​​三、数据切片与索引​​

1. 列数据提取

2. 行数据提取

3. 行列混合提取

​​四、分组聚合计算​​

1. 分组核心逻辑

2. 分组聚合操作

3. 分组频数统计

​​五、基础数据绘图​​

1. 快速绘图

2. 常用图表类型

​​六、实操技巧总结​​


​一、Pandas DataFrame简介​

  • ​核心概念​​:

    • Pandas:Python数据分析库,用于数据加载、清洗、转换、统计和可视化

    • DataFrame:处理结构化数据的二维表格结构(类似Excel/SQL表)

    • Series:单列数据容器,DataFrame由多个Series组成

  • ​核心功能​​:

    import pandas as pd
    # 创建示例DataFrame
    data = {'Country': ['China', 'USA', 'Japan'],
            'Population': [14, 3.3, 1.2]}
    df = pd.DataFrame(data)

​二、数据加载与查看​
1. 加载数据集
# 加载CSV/TSV文件
df = pd.read_csv('gapminder.csv')         # CSV默认逗号分隔
df = pd.read_csv('gapminder.tsv', sep='\t') # TSV需指定分隔符
2. 查看数据属性

方法/属性

作用

示例

df.shape

获取行列数

(1704, 6)→ 1704行6列

df.columns

查看列名

['country','year','pop',...]

df.dtypes

查看列数据类型

country:object, year:int64

df.info()

综合信息(含内存占用)

输出各列非空值数量及类型

3. 查看部分数据
df.head(5)   # 前5行
df.tail(3)   # 后3行
df.sample(2) # 随机2行

​三、数据切片与索引​
1. 列数据提取
# 单列提取 → 返回Series
country_series = df['country']

# 多列提取 → 返回DataFrame
sub_df = df[['country', 'year', 'gdpPercap']]
2. 行数据提取

方法

场景

示例

loc[]

按标签索引

df.loc[0]→ 第1行
df.loc[99:100]→ 100-101行

iloc[]

按位置索引

df.iloc[0]→ 第1行
df.iloc[-1]→ 最后一行
df.iloc[:, 0:3]→ 所有行的1-3列

3. 行列混合提取
# 提取特定行+列
df.loc[10:15, ['country', 'lifeExp']]  # 10-15行的国家与寿命
df.iloc[[0, 99, 999], [0, 3, 5]]       # 第0/100/1000行的1/4/6列

​注意​​:loc用标签,iloc用位置索引,不可混用(df.loc[42,0]会报错)


​四、分组聚合计算​
1. 分组核心逻辑
graph LR
A[原始数据] --> B[按条件分组] 
B --> C[组内聚合计算]
C --> D[合并结果]
2. 分组聚合操作
# 按年份分组计算平均寿命
yearly_life = df.groupby('year')['lifeExp'].mean()

# 按大洲分组计算多列统计
continent_stats = df.groupby('continent').agg({
    'lifeExp': 'mean',
    'pop': ['sum', 'count'],
    'gdpPercap': 'median'
})

​输出示例​​:

continent

lifeExp_mean

pop_sum

pop_count

gdpPercap_median

Asia

60.1

3.2e9

396

4471

Europe

71.9

6e8

360

12081

3. 分组频数统计
# 统计各大洲国家数量
continent_counts = df['continent'].value_counts()

# 统计年份唯一值
unique_years = df['year'].nunique()  # 输出年份种类数

​五、基础数据绘图​
1. 快速绘图
# 折线图:全球历年平均寿命变化
global_life = df.groupby('year')['lifeExp'].mean()
global_life.plot(title='Global Life Expectancy (1952-2007)')

# 柱状图:各大洲GDP中位数
df.groupby('continent')['gdpPercap'].median().plot(kind='bar')
2. 常用图表类型

参数 kind=

图表类型

适用场景

line(默认)

折线图

时间趋势

bar

柱状图

类别比较

hist

直方图

数据分布

box

箱线图

离群值检测


​六、实操技巧总结​
  1. ​数据加载优化​​:

    • 只加载必要列:pd.read_csv('data.csv', usecols=['col1','col2'])

    • 处理大文件:chunksize=1000分块读取

  2. ​分组聚合进阶​​:

    # 多级分组:按大洲和年份
    df.groupby(['continent','year'])['pop'].sum()
    
    # 自定义聚合函数
    def data_range(x):
        return x.max() - x.min()
    df.groupby('country')['gdpPercap'].apply(data_range)
  3. ​绘图增强​​:

    import matplotlib.pyplot as plt
    plt.style.use('ggplot')  # 使用专业绘图风格
    
    # 添加图表元素
    ax = yearly_life.plot(color='red', linestyle='--')
    ax.set_xlabel("Year")
    ax.set_ylabel("Life Expectancy")
    plt.savefig('life_expectancy.png')  # 保存图像

​学习建议​​:结合真实数据集(如gapminder)练习每个操作,使用print()Jupyter即时查看输出结果,逐步构建分析思维。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值