数据分析——pandas聚合与分组函数

主要内容
  1. DataFrame.groupby().sum()
  2. DataFrame.groupby().agg()
  3. pandas.concat([DataFame1, DataFrame2])
  4. pandas.merge(DataFrame1, DataFrame2, parameters...)
  5. DataFrame1.join(DataFrame2, lsuffix='列名 on DataFrame1', rsuffix='列名 on DataFrame2')
  6. 帮助文档的获取

实例
构造dataframe
import pandas as pd
from numpy import random
from numpy.random import rand
import numpy as np

random.seed(42)

df = pd.DataFrame({'user_id':random.randint(0,6,size=10),
                    'food_id':random.randint(1,10,size=10),
                    'weather':['cold','hot','cold','hot','cold','cold','cold','hot','hot','hot'],
                    'food':['soup','soup','iceream','chocolate','iceream','iceream','iceream','soup','soup','chocolate'],
                    'price':10 * rand(10),
                    'number':random.randint(1,9,size=10)}) 

print(df)

numpy.random.seed()的使用:

seed()用于指定随机数生成时所用算法开始的整数值

  1. 如果使用相同的seed( )值,则每次生成的随即数都相同;
  2. 如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
  3. 设置的seed()值仅一次有效

输出

   user_id  food_id weather       food     price  number
0        3        4    cold       soup  1.818250       6
1        4        8     hot       soup  1.834045       6
2        2        8    cold    iceream  3.042422       7
3        4        3     hot  chocolate  5.247564       6
4        4        6    cold    iceream  4.319450       3
5        1        5    cold    iceream  2.912291       4
6        2        2    cold    iceream  6.118529       7
7        2        8     hot       soup  1.394939       4
8        2        6     hot       soup  2.921446       8
9        4        2     hot  chocolate  3.663618       1

groupby()函数使用
groupby1 = df.groupby(['usr_id'])
i = 0
for user_id, group in groupby1:
    i = i + 1
    print('group', user_id)
    print(group)

输出

group 1
   user_id  food_id weather     food     price  number
5        1        5    cold  iceream  2.912291       4
group 2
   user_id  food_id weather     food     price  number
2        2        8    cold  iceream  3.042422       7
6        2        2    cold  iceream  6.118529       7
7        2        8     hot     soup  1.394939       4
8        2        6     hot     soup  2.921446       8
group 3
   user_id  food_id weather  food    price  number
0        3        4    cold  soup  1.81825       6
group 4
   user_id  food_id weather       food     price  number
1        4        8     hot       soup  1.834045       6
3        4        3     hot  chocolate  5.247564       6
4        4        6    cold    iceream  4.319450       3
9        4        2     hot  chocolate  3.663618       1

groupby和sum等函数结合使用
print(groupby1.sum())                        #对除了groupby索引以外的每个数值列进行求和 
print(groupby1['food_id','number'].sum())                 #对除了groupby索引以外的特定数值列进行求和 
print(df.groupby(['user_id'],as_index=False).sum())       #默认as_index=True

除了sum,还有mean,min,max,median,mode,std , mad等等,操作方法同理

参数axis=0,表示对行进行操作,即指定列中不同值进行分组;axis=1,表示对列进行分组

输出

         food_id      price  number
user_id                            
1              5   2.912291       4
2             24  13.477336      26
3              4   1.818250       6
4             19  15.064678      16
         food_id  number
user_id                 
1              5       4
2             24      26
3              4       6
4             19      16
   user_id  food_id      price  number
0        1        5   2.912291       4
1        2       24  13.477336      26
2        3        4   1.818250       6
3        4       19  15.064678      16

agg函数的使用
print(df.groupby(['weather', 'food']).agg([np.mean, np.median]))
                    user_id          food_id  ...       price number       
                       mean median      mean  ...      median   mean median
weather food                                  ...                          
cold    iceream    2.250000      2  5.250000  ...    3.680936   5.25    5.5
        soup       3.000000      3  4.000000  ...    1.818250   6.00    6.0
hot     chocolate  4.000000      4  2.500000  ...    4.455591   3.50    3.5
        soup       2.666667      2  7.333333  ...    1.834045   6.00    6.0


[4 rows x 8 columns]
 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这篇笔记主要介绍了Pandas模块的基本操作和使用方法。Pandas是Python中一个用于数据分析和处理的常用库,提供了高效的数据结构和数据分析工具,是进行数据处理和数据挖掘的重要工具之一。 一、Pandas数据结构 Pandas主要有两种数据结构:Series和DataFrame。 1. Series Series是一种类似于一维数组的对象,由一组数据和一组与之相关的标签(即索引)组成。Series的创建方式如下: ```python import pandas as pd # 通过列表创建Series s = pd.Series([1, 3, 5, np.nan, 6, 8]) # 通过字典创建Series s = pd.Series({'a': 1, 'b': 2, 'c': 3}) ``` 2. DataFrame DataFrame是一种二维表格数据结构,由一组数据和一组行索引和列索引组成。DataFrame的创建方式有很多种,最常用的是通过字典创建。例如: ```python import pandas as pd data = {'name': ['Tom', 'Jerry', 'Mike'], 'age': [18, 20, 22], 'gender': ['M', 'M', 'F']} df = pd.DataFrame(data) ``` 二、Pandas的基本操作 1. 数据读取 Pandas可以读取多种格式的数据文件,如CSV、Excel、SQL等。常用的读取CSV文件的方式如下: ```python import pandas as pd df = pd.read_csv('data.csv') ``` 2. 数据预处理 数据预处理是数据挖掘中非常重要的一部分,Pandas提供了很多方便的函数和方法来进行数据清洗和转换。常用的数据预处理函数和方法有: - 处理缺失值 ```python # 判断是否存在缺失值 df.isnull() # 删除缺失值 df.dropna() # 填充缺失值 df.fillna(value) ``` - 处理重复值 ```python # 删除重复值 df.drop_duplicates() ``` - 数据转换 ```python # 数据类型转换 df.astype() # 数据替换 df.replace() ``` 3. 数据分析 Pandas提供了各种数据分析和处理的方法和函数,常用的包括: - 统计函数 ```python # 计算平均值 df.mean() # 计算标准差 df.std() # 计算最大值和最小值 df.max(), df.min() ``` - 排序 ```python # 按照某列排序 df.sort_values(by='column_name') ``` - 数据聚合 ```python # 对某列数据进行分组求和 df.groupby('column_name').sum() ``` 以上是Pandas模块的基础内容,还有很多高级用法和技巧需要进一步学习和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值