首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >数据清洗之 数据分组方法

数据清洗之 数据分组方法

原创
作者头像
ruochen
修改2021-05-14 10:02:14
修改2021-05-14 10:02:14
1.1K0
举报

数据分组方法

  • 分组计算根据某个或某几个字段对数据集进行分组,然后运用特点的函数,得到结果
  • 使用groupby方法进行分组计算,得到分组对象GroupBy
  • 语法为df.groupby(by=)
  • 分组对象GroupBy可以运用描述性统计方法,如count(计数)、mean(均值)、median(中位数)、max(最大值)和min(最小值)等
代码语言:txt
复制
import pandas as pd
import numpy as np
import os
代码语言:txt
复制
os.getcwd()
代码语言:txt
复制
'D:\\Jupyter\\notebook\\Python数据清洗实战\\数据清洗之数据统计'
代码语言:txt
复制
os.chdir('D:\\Jupyter\\notebook\\Python数据清洗实战\\数据')
代码语言:txt
复制
df = pd.read_csv('online_order.csv', encoding='gbk', dtype={'customer':str, 'order':str})
代码语言:txt
复制
df.head(5)

<div>

<style scoped>

代码语言:txt
复制
.dataframe tbody tr th:only-of-type {
代码语言:txt
复制
    vertical-align: middle;
代码语言:txt
复制
}
代码语言:txt
复制
.dataframe tbody tr th {
代码语言:txt
复制
    vertical-align: top;
代码语言:txt
复制
}
代码语言:txt
复制
.dataframe thead th {
代码语言:txt
复制
    text-align: right;
代码语言:txt
复制
}

</style>

<table border="1" class="dataframe">

<thead>

代码语言:txt
复制
<tr style="text-align: right;">
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th>customer</th>
代码语言:txt
复制
  <th>order</th>
代码语言:txt
复制
  <th>total_items</th>
代码语言:txt
复制
  <th>discount%</th>
代码语言:txt
复制
  <th>weekday</th>
代码语言:txt
复制
  <th>hour</th>
代码语言:txt
复制
  <th>Food%</th>
代码语言:txt
复制
  <th>Fresh%</th>
代码语言:txt
复制
  <th>Drinks%</th>
代码语言:txt
复制
  <th>Home%</th>
代码语言:txt
复制
  <th>Beauty%</th>
代码语言:txt
复制
  <th>Health%</th>
代码语言:txt
复制
  <th>Baby%</th>
代码语言:txt
复制
  <th>Pets%</th>
代码语言:txt
复制
</tr>

</thead>

<tbody>

代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>0</th>
代码语言:txt
复制
  <td>0</td>
代码语言:txt
复制
  <td>0</td>
代码语言:txt
复制
  <td>45</td>
代码语言:txt
复制
  <td>23.03</td>
代码语言:txt
复制
  <td>4</td>
代码语言:txt
复制
  <td>13</td>
代码语言:txt
复制
  <td>9.46</td>
代码语言:txt
复制
  <td>87.06</td>
代码语言:txt
复制
  <td>3.48</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>1</th>
代码语言:txt
复制
  <td>0</td>
代码语言:txt
复制
  <td>1</td>
代码语言:txt
复制
  <td>38</td>
代码语言:txt
复制
  <td>1.22</td>
代码语言:txt
复制
  <td>5</td>
代码语言:txt
复制
  <td>13</td>
代码语言:txt
复制
  <td>15.87</td>
代码语言:txt
复制
  <td>75.80</td>
代码语言:txt
复制
  <td>6.22</td>
代码语言:txt
复制
  <td>2.12</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>2</th>
代码语言:txt
复制
  <td>0</td>
代码语言:txt
复制
  <td>2</td>
代码语言:txt
复制
  <td>51</td>
代码语言:txt
复制
  <td>18.08</td>
代码语言:txt
复制
  <td>4</td>
代码语言:txt
复制
  <td>13</td>
代码语言:txt
复制
  <td>16.88</td>
代码语言:txt
复制
  <td>56.75</td>
代码语言:txt
复制
  <td>3.37</td>
代码语言:txt
复制
  <td>16.48</td>
代码语言:txt
复制
  <td>6.53</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>3</th>
代码语言:txt
复制
  <td>1</td>
代码语言:txt
复制
  <td>3</td>
代码语言:txt
复制
  <td>57</td>
代码语言:txt
复制
  <td>16.51</td>
代码语言:txt
复制
  <td>1</td>
代码语言:txt
复制
  <td>12</td>
代码语言:txt
复制
  <td>28.81</td>
代码语言:txt
复制
  <td>35.99</td>
代码语言:txt
复制
  <td>11.78</td>
代码语言:txt
复制
  <td>4.62</td>
代码语言:txt
复制
  <td>2.87</td>
代码语言:txt
复制
  <td>15.92</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>4</th>
代码语言:txt
复制
  <td>1</td>
代码语言:txt
复制
  <td>4</td>
代码语言:txt
复制
  <td>53</td>
代码语言:txt
复制
  <td>18.31</td>
代码语言:txt
复制
  <td>2</td>
代码语言:txt
复制
  <td>11</td>
代码语言:txt
复制
  <td>24.13</td>
代码语言:txt
复制
  <td>60.38</td>
代码语言:txt
复制
  <td>7.78</td>
代码语言:txt
复制
  <td>7.72</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.00</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
  <td>0.0</td>
代码语言:txt
复制
</tr>

</tbody>

</table>

</div>

代码语言:txt
复制
grouped = df.groupby('weekday')
代码语言:txt
复制
type(grouped)
代码语言:txt
复制
pandas.core.groupby.generic.DataFrameGroupBy
代码语言:txt
复制
grouped.mean()

<div>

<style scoped>

代码语言:txt
复制
.dataframe tbody tr th:only-of-type {
代码语言:txt
复制
    vertical-align: middle;
代码语言:txt
复制
}
代码语言:txt
复制
.dataframe tbody tr th {
代码语言:txt
复制
    vertical-align: top;
代码语言:txt
复制
}
代码语言:txt
复制
.dataframe thead th {
代码语言:txt
复制
    text-align: right;
代码语言:txt
复制
}

</style>

<table border="1" class="dataframe">

<thead>

代码语言:txt
复制
<tr style="text-align: right;">
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th>total_items</th>
代码语言:txt
复制
  <th>discount%</th>
代码语言:txt
复制
  <th>hour</th>
代码语言:txt
复制
  <th>Food%</th>
代码语言:txt
复制
  <th>Fresh%</th>
代码语言:txt
复制
  <th>Drinks%</th>
代码语言:txt
复制
  <th>Home%</th>
代码语言:txt
复制
  <th>Beauty%</th>
代码语言:txt
复制
  <th>Health%</th>
代码语言:txt
复制
  <th>Baby%</th>
代码语言:txt
复制
  <th>Pets%</th>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>weekday</th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
  <th></th>
代码语言:txt
复制
</tr>

</thead>

<tbody>

代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>1</th>
代码语言:txt
复制
  <td>30.662177</td>
代码语言:txt
复制
  <td>8.580705</td>
代码语言:txt
复制
  <td>14.693122</td>
代码语言:txt
复制
  <td>22.690866</td>
代码语言:txt
复制
  <td>20.000904</td>
代码语言:txt
复制
  <td>22.522993</td>
代码语言:txt
复制
  <td>13.932553</td>
代码语言:txt
复制
  <td>6.972394</td>
代码语言:txt
复制
  <td>1.152285</td>
代码语言:txt
复制
  <td>11.592562</td>
代码语言:txt
复制
  <td>1.007306</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>2</th>
代码语言:txt
复制
  <td>31.868612</td>
代码语言:txt
复制
  <td>8.638014</td>
代码语言:txt
复制
  <td>14.966197</td>
代码语言:txt
复制
  <td>23.994915</td>
代码语言:txt
复制
  <td>19.407738</td>
代码语言:txt
复制
  <td>24.346459</td>
代码语言:txt
复制
  <td>13.559191</td>
代码语言:txt
复制
  <td>4.903366</td>
代码语言:txt
复制
  <td>1.079423</td>
代码语言:txt
复制
  <td>11.277284</td>
代码语言:txt
复制
  <td>1.272638</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>3</th>
代码语言:txt
复制
  <td>31.869796</td>
代码语言:txt
复制
  <td>7.794507</td>
代码语言:txt
复制
  <td>15.059898</td>
代码语言:txt
复制
  <td>24.309274</td>
代码语言:txt
复制
  <td>19.957653</td>
代码语言:txt
复制
  <td>23.822470</td>
代码语言:txt
复制
  <td>13.282088</td>
代码语言:txt
复制
  <td>6.702640</td>
代码语言:txt
复制
  <td>1.156829</td>
代码语言:txt
复制
  <td>9.591389</td>
代码语言:txt
复制
  <td>0.937205</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>4</th>
代码语言:txt
复制
  <td>32.251899</td>
代码语言:txt
复制
  <td>8.068155</td>
代码语言:txt
复制
  <td>14.324185</td>
代码语言:txt
复制
  <td>24.374364</td>
代码语言:txt
复制
  <td>21.538027</td>
代码语言:txt
复制
  <td>24.553266</td>
代码语言:txt
复制
  <td>13.391946</td>
代码语言:txt
复制
  <td>4.806528</td>
代码语言:txt
复制
  <td>1.031490</td>
代码语言:txt
复制
  <td>9.058201</td>
代码语言:txt
复制
  <td>1.080473</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>5</th>
代码语言:txt
复制
  <td>31.406619</td>
代码语言:txt
复制
  <td>9.159031</td>
代码语言:txt
复制
  <td>13.386919</td>
代码语言:txt
复制
  <td>24.602790</td>
代码语言:txt
复制
  <td>20.549153</td>
代码语言:txt
复制
  <td>24.976466</td>
代码语言:txt
复制
  <td>12.485788</td>
代码语言:txt
复制
  <td>5.431221</td>
代码语言:txt
复制
  <td>1.248605</td>
代码语言:txt
复制
  <td>9.655343</td>
代码语言:txt
复制
  <td>0.908227</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>6</th>
代码语言:txt
复制
  <td>32.154814</td>
代码语言:txt
复制
  <td>8.414258</td>
代码语言:txt
复制
  <td>14.751084</td>
代码语言:txt
复制
  <td>23.743196</td>
代码语言:txt
复制
  <td>18.707788</td>
代码语言:txt
复制
  <td>23.593699</td>
代码语言:txt
复制
  <td>14.173291</td>
代码语言:txt
复制
  <td>5.878647</td>
代码语言:txt
复制
  <td>1.170585</td>
代码语言:txt
复制
  <td>11.478343</td>
代码语言:txt
复制
  <td>1.150980</td>
代码语言:txt
复制
</tr>
代码语言:txt
复制
<tr>
代码语言:txt
复制
  <th>7</th>
代码语言:txt
复制
  <td>32.373837</td>
代码语言:txt
复制
  <td>8.710171</td>
代码语言:txt
复制
  <td>16.989535</td>
代码语言:txt
复制
  <td>22.271512</td>
代码语言:txt
复制
  <td>21.020359</td>
代码语言:txt
复制
  <td>21.093767</td>
代码语言:txt
复制
  <td>13.632481</td>
代码语言:txt
复制
  <td>5.895322</td>
代码语言:txt
复制
  <td>1.145938</td>
代码语言:txt
复制
  <td>13.844250</td>
代码语言:txt
复制
  <td>0.950391</td>
代码语言:txt
复制
</tr>

</tbody>

</table>

</div>

代码语言:txt
复制
grouped.mean()['Food%']
代码语言:txt
复制
weekday
代码语言:txt
复制
1    22.690866
代码语言:txt
复制
2    23.994915
代码语言:txt
复制
3    24.309274
代码语言:txt
复制
4    24.374364
代码语言:txt
复制
5    24.602790
代码语言:txt
复制
6    23.743196
代码语言:txt
复制
7    22.271512
代码语言:txt
复制
Name: Food%, dtype: float64
代码语言:txt
复制
# 多个字段分组
grouped = df.groupby(by=['customer', 'weekday'])
代码语言:txt
复制
grouped.sum()['total_items']
代码语言:txt
复制
customer  weekday
代码语言:txt
复制
0         4           96
代码语言:txt
复制
          5           38
代码语言:txt
复制
1         1          423
代码语言:txt
复制
          2          127
代码语言:txt
复制
          4           37
代码语言:txt
复制
          5           36
代码语言:txt
复制
10        1           23
代码语言:txt
复制
          3           26
代码语言:txt
复制
100       1           38
代码语言:txt
复制
          2           78
代码语言:txt
复制
          3           78
代码语言:txt
复制
          7          135
代码语言:txt
复制
1000      2            6
代码语言:txt
复制
10000     6           30
代码语言:txt
复制
10001     6           15
代码语言:txt
复制
10002     3           11
代码语言:txt
复制
          6           42
代码语言:txt
复制
          7           48
代码语言:txt
复制
10003     2            4
代码语言:txt
复制
10004     2           28
代码语言:txt
复制
          3          131
代码语言:txt
复制
          4           93
代码语言:txt
复制
10005     7           29
代码语言:txt
复制
10006     2           20
代码语言:txt
复制
          5           27
代码语言:txt
复制
          7           26
代码语言:txt
复制
10007     2            6
代码语言:txt
复制
          6           15
代码语言:txt
复制
10008     7          123
代码语言:txt
复制
10009     1            2
代码语言:txt
复制
                    ... 
代码语言:txt
复制
9984      6           40
代码语言:txt
复制
          7           61
代码语言:txt
复制
9985      6           11
代码语言:txt
复制
9986      1           50
代码语言:txt
复制
          6           49
代码语言:txt
复制
          7           50
代码语言:txt
复制
9987      1           23
代码语言:txt
复制
9988      1           18
代码语言:txt
复制
          4            1
代码语言:txt
复制
9989      1           27
代码语言:txt
复制
999       1          173
代码语言:txt
复制
          2           45
代码语言:txt
复制
          4           60
代码语言:txt
复制
          5          137
代码语言:txt
复制
          7          149
代码语言:txt
复制
9990      7            8
代码语言:txt
复制
9991      6           46
代码语言:txt
复制
9992      1           13
代码语言:txt
复制
          2           14
代码语言:txt
复制
          5           25
代码语言:txt
复制
          6           24
代码语言:txt
复制
9993      6            8
代码语言:txt
复制
9994      2           64
代码语言:txt
复制
          3           57
代码语言:txt
复制
9995      7           14
代码语言:txt
复制
9996      7           14
代码语言:txt
复制
9997      6            5
代码语言:txt
复制
9998      1           28
代码语言:txt
复制
          6           10
代码语言:txt
复制
9999      6            4
代码语言:txt
复制
Name: total_items, Length: 20777, dtype: int64

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据分组方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档