You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环创建并追加DataFrame,按条件生成饼图所需数据集

Pandas筛选DataFrame与饼图绘制基础指南

一、修复循环生成DataFrame的问题

你原来的循环每次都会把my_pie重新赋值为单行数据,最后自然只剩最后一行。要收集100行第1、3列的数据,不用循环,直接用切片更高效:

# 直接取前100行的第1、3列(iloc索引从0开始)
my_pie = data.iloc[:100, [1, 3]]
display(my_pie)

如果一定要用循环(不推荐,效率低),得先初始化空列表存每一行,最后合并:

rows = []
for i in range(100):
    row = data.iloc[[i], [1, 3]]
    rows.append(row)
# 把列表里的所有行合并成一个DataFrame
my_pie = pd.concat(rows)
display(my_pie)

二、按条件筛选数据的基础方法

1. 取100个最常见的值

针对某一列统计频次,取前100个高频值对应的行:

# 统计第1列的高频值,取前100个
top_100_common = data.iloc[:,1].value_counts().head(100).index
# 筛选原数据中第1列属于这些高频值的行
filtered_df = data[data.iloc[:,1].isin(top_100_common)]

2. 取某列的100个最高值

按指定列降序排序后取前100行:

# 按第3列降序排序,取前100行
top_100_high = data.sort_values(by=data.columns[3], ascending=False).head(100)

3. 取某列的100个最低值

按指定列升序排序后取前100行:

# 按第3列升序排序,取前100行
top_100_low = data.sort_values(by=data.columns[3], ascending=True).head(100)

三、用筛选后的DataFrame绘制简单饼图

用pandas自带的绘图工具配合matplotlib显示:

import matplotlib.pyplot as plt

# 用第1列做饼图标签,第3列做数值
my_pie.set_index(my_pie.columns[1], inplace=True)
my_pie.plot.pie(y=my_pie.columns[0], figsize=(8,8))
plt.ylabel('')  # 去掉默认的y轴标签
plt.show()

内容的提问来源于stack exchange,提问作者tooDeeStoned

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:30:05