python - python pandas按列分组,统计其对应列的累计值
问题描述
今天我不得不用python处理一些问题。
根据销售区域分组,累计对应出货量,对出货结果进行四舍五入。大区的值为NULL或空,希望跳过统计。输出的csv文件需要有大面积+销售面积+出货量+留言
Id, Message, region, shipping volume, sales area
1, natural, AAA, 25.02, 111
2, Nature, BBB, 63.22, 222
3, China, CCC, 554.21, 333
4, yes, AAA, 63.22, NULL
5, large, NULL, 645.55, 222
6, DAD ,,, 333
7, large, BBB, 69.22, 222
8, NULL, DDD, NULL, 444
我确实尝试过:
结果:
import pandas as pd
import csv
import math
df = pd.read \ _csv (r'G: \\ 360MoveData \\ Users \\ Hasee \\ Desktop \\ Business List.csv ')
#Discard missing values
# df = df.dropna (axis = 0, subset = \ ["Sales Area", "erp average daily shipment amount" \])
for i in range (len (df)):
if (df \ ['Sales Area' \] \ [i \] == '' or df \ ['Sales Area' \] \ [i \] == "NULL"):
df = df.drop (i)
#Rounded up
#df \ _sum = df.groupby ('Sales Area'). agg ({"Shipping Volume": sum}). reset \ _index ()
df \ _sum = df.groupby ("Sales Area"). agg ({"Shipping Volume": sum})
#df \ _sum = df.insert (3, "Area name", df \ _sum ('Area'))
df \ _sum.to \ _csv (r'G: \\ 360MoveData \\ Users \\ Hasee \\ Desktop \\ Count1.csv ')
问题: 1. 不知道如何添加区列表。2.我想用math.ceil()对销售区域和manifest的值进行四舍五入,不知道怎么加。3、第一行是0.0,应该是NULL值和空值引起的,如何避免。
解决方案
使用groupby
如下
1. 通过修剪空白将 csv 读入数据帧。
df = pd.read_csv('/Users/prince/Downloads/test2.csv', sep=',', skipinitialspace=True)
输出是
Id Message region shipping volume sales area
1 natural AAA 25.02 111.0
2 Nature BBB 63.22 222.0
3 China CCC 554.21 333.0
4 yes AAA 63.22 NaN
5 large NaN 645.55 222.0
6 DAD NaN NaN 333.0
7 large BBB 69.22 222.0
8 NaN DDD NaN 444.0
2. 现在删除 NaN 值
df = df.dropna()
输出是
Id Message region shipping volume sales area
1 natural AAA 25.02 111.0
2 Nature BBB 63.22 222.0
3 China CCC 554.21 333.0
7 large BBB 69.22 222.0
3.现在做groupby
在你的问题中,你正在做 groupbySales Area
df = df.groupby ("sales area", as_index=False). agg ({"shipping volume": 'sum'})
这将给出输出
sales area shipping volume
111.0 25.02
222.0 132.44
333.0 554.21
4.如果要包含其他列,aggregate
请执行以下操作
df.groupby ("sales area", as_index=False). agg ({"shipping volume": 'sum', 'Message' : 'first', 'region' : 'first'})
这将为您提供以下输出。
sales area shipping volume Message region
111.0 25.02 natural AAA
222.0 132.44 Nature BBB
333.0 554.21 China CCC
推荐阅读
- git - 将 Git 非分支引用推送到远程
- c - 超时后杀死子进程,有多个孩子?
- c - 为什么a + = a在C中等于0?
- java - 在 Java 中是否可以在不使用关键字“implements”的情况下实现接口及其方法?
- vue.js - 在vue中绑定动态img src
- pug - 在不重复属性的情况下应用多个类的方法,这些类在 Pug 中占用多于一行
- java - 将不同的变量传递给反射 getMethod 并调用所述方法
- java - 有没有其他方法可以在不使用 writer 对象和列文本类的情况下在 ITEXT 中绝对定位段落/短语
- php - 带有请求正文的 Wordpress 发布 API
- python - 数据不适合底图