pandas 分組聚合提示詞(groupby + agg 多指標、transform 組內佔比與排名、pivot_table 透視、結果整理成報表)
用 pandas 做分組統計(按區域按月彙總多個指標、組內佔比、每組取前幾名、透視表)時寫不出或結果格式很亂(多級列名、索引錯位)時用:描述數據和想要的結果表,AI 寫出清晰的分組代碼,講清 agg、transform、apply 各自適合什麼,並把結果整理成可以直接導出的報表。
通用大模型 對話模型通用
你是一名熟練使用 pandas 的數據分析師,代碼追求清晰、可讀、向量化。請幫我完成分組統計。 - pandas 版本:[pandas 版本](例:2.2) - 數據結構(df.head() 與 df.dtypes 的輸出,原樣粘貼): [數據結構] - 想要的結果:[想要的結果](例:每個區域每月的訂單數、銷售額、客單價、銷售額佔該區域全年比例) - 結果用途:[結果用途](例:導出 Excel 給業務看) 要求: 1. 先說明思路:按哪些列分組、每個指標用什麼聚合;哪些指標需要先聚合再計算(例如客單價 = 銷售額合計 ÷ 訂單數,而不是對每行的單價求平均)。 2. 寫法選擇並說明理由: - 多個指標用命名聚合,結果列名直接可讀,避免多級列名; - 需要把組內統計結果放回原表每一行時(組內佔比、組內排名、與組平均的差),用 transform; - 每組取前 N 名,用排序加分組取頭部,或用分組排名後篩選; - 只有在上面都做不到時才用 apply,並說明它通常更慢。 3. 透視:需要行列交叉的報表時用 pivot_table,說明 index、columns、values、aggfunc、fill_value、margins 的作用。 4. 細節:分組列中的空值預設會被丟棄,需要保留時的參數;分類類型分組時未出現的類別是否顯示;按月分組時先把日期轉換為月份;分組後重置索引。 5. 結果整理:列的順序、重命名為中文、數字格式(百分比、保留小數)、排序,導出為 Excel。 6. 用幾行手工計算核對結果。 代碼中每一步加中文註釋。 數據量超過幾百萬行時,提醒我考慮 DuckDB 或 Polars 做同樣的分組聚合(可配合 1113 號提示詞)。
高亮處換成你自己的內容:[pandas 版本]、[數據結構]、[想要的結果]、[結果用途]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:[數據結構] 貼 df.head() 和 df.dtypes 的輸出最有用:AI 能看到列名、樣例和類型,比如日期列是不是真正的日期類型,金額列是不是被讀成了文本。
常見坑:
- 客單價、轉化率這類比率指標,直接對每行的比率求平均,結果是錯的。要先分別彙總分子和分母,再相除。
- 一次傳入多個聚合函數,得到兩層列名,後面處理和導出都很麻煩。用命名聚合,一步得到清晰的列名。
- 分組列中有空值時,預設會被直接丟掉,彙總總數和原始數據對不上,卻很難察覺。
追問技巧:追問「把結果再按區域做小計和總計,導出成帶格式的 Excel」(可配合 1133 號 openpyxl 報表提示詞),或「同樣的統計改用 SQL 怎麼寫」。
示例輸出
示例,僅供參考(節選)
python
import pandas as pd
df["月份"] = df["下單時間"].dt.to_period("M").astype(str)
# 1. 命名聚合:列名直接可讀
monthly = (
df.groupby(["區域", "月份"], dropna=False) # 保留區域為空的記錄
.agg(訂單數=("訂單號", "nunique"), 銷售額=("金額", "sum"))
.reset_index()
)
# 2. 客單價:先彙總再相除
monthly["客單價"] = monthly["銷售額"] / monthly["訂單數"]
# 3. 佔該區域全年的比例:transform 把區域合計放回每一行
monthly["區域內佔比"] = monthly["銷售額"] / monthly.groupby("區域", dropna=False)["銷售額"].transform("sum")
# 透視:行是區域,列是月份,值是銷售額
report = monthly.pivot_table(index="區域", columns="月份", values="銷售額",
aggfunc="sum", fill_value=0, margins=True, margins_name="合計")同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


0 條評論
還沒有評論,來搶沙發~