pandas学习(数据分组与分组运算、离散化处理、数据合并)

目录

数据分组与分组运算

离散化处理

 数据合并

数据分组与分组运算

GroupBy技术:实现数据的分组,和分组运算,作用类似于数据透视表

数据分组--〉归纳

  

程序示例

import numpy as np
import pandas as pd
# 读入数据
df=pd.read_csv('data1.txt')
print('原始数据')
print(df) #返回一个对象 group=df.groupby(df['产地']) #计算分组后的各个统计值
print('根据产地进行分组')
print(group.mean())
print(group.sum()) # 只计算某列的结果
print('根据年代进行分组,然后统计每一个年代的平均评分')
print(df['评分'].groupby(df['年代']).mean()) #根据多个分组变量进行分组
print('多个分组变量进行分组')
print(df.groupby([df['产地'],df['年代']]).mean()) #获得每一个地区,每一年的电影的评分的均值
print('多个分组变量进行分组之操作某列')
print(df['评分'].groupby([df['产地'],df['年代']]).mean())

  

运行结果

原始数据
名字 投票人数 类型 产地 上映时间 时长 年代 评分
0 美丽人生 42995 剧情/喜剧/爱情 意大利 1997-12-20 116 1997 9.5
1 阿甘正传 580897 剧情/爱情 美国 1994-06-23 142 1994 9.4
2 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6
3 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 116 1957 9.5
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 171 1993 9.4
根据产地进行分组
投票人数 时长 年代 评分
产地
中国大陆 478523.000000 171.000000 1993.000000 9.4
意大利 42995.000000 116.000000 1997.000000 9.5
美国 438895.666667 133.333333 1981.666667 9.5
投票人数 时长 年代 评分
产地
中国大陆 478523 171 1993 9.4
意大利 42995 116 1997 9.5
美国 1316687 400 5945 28.5 根据年代进行分组,然后统计每一个年代的平均评分
年代
1957 9.5
1993 9.4
1994 9.5
1997 9.5
Name: 评分, dtype: float64 多个分组变量进行分组
投票人数 时长 评分
产地 年代
中国大陆 1993 478523 171 9.4
意大利 1997 42995 116 9.5
美国 1957 42995 116 9.5
1994 636846 142 9.5 多个分组变量进行分组之操作某列
产地 年代
中国大陆 1993 9.4
意大利 1997 9.5
美国 1957 9.5
1994 9.5
Name: 评分, dtype: float64

  

  

离散化处理

#在实际的数据分析项目中,对有数据属性,我们往往并不是关注数据的绝对数值,只关注它所处的区间或者等级
# 比如,我们可以把评分9分及以上的电影定义为A,7到9分为B,5到7分定义为C,3到5分定义为D,小于3分定义为E
#离散化也被称为分组,区间化
#pandas为我们提供了方便的函数cut()
# pandas.cut( x , bins , right=True , labels=None , retbins=False , precision=3 , include_lowest=False,duplicates='raise')
#  参数说明: 
#
#      x    : 进行划分的一维数组;
#      bins :如果是整数---将x划分为多少个等间距的区间,如代码一;
#      bins :如果是序列,则将x划分在指定的序列中,若不在该序列中,则是NaN ,如代码二;
#      right : 是否包含右端点;
#      labels : 是否用标记来代替返回的bins,如代码三;
#      retbins: 是否返回间距bins,如果retbins = False 则返回x中每个值对应的bin的列表,否者则返回x中每个值对应的bin的列表和对应的bins;
#      precision: 精精度;
#      include_lowest:是否包含左端点; 

程序示例

import numpy as np
import pandas as pd
# 读入数据
df=pd.read_csv('data1.txt')
print('原始数据')
print(df)
data=pd.cut(df['评分'],[0,3,5,7,9,10],labels=['E','D','C','B','A'])
print(data)
df['等级']=data
print(df)

  

运行结果

原始数据
名字 投票人数 类型 产地 上映时间 时长 年代 评分
0 美丽人生 42995 剧情/喜剧/爱情 意大利 1997-12-20 116 1997 9.5
1 阿甘正传 580897 剧情/爱情 美国 1994-06-23 142 1994 9.4
2 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6
3 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 116 1957 9.5
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 171 1993 9.4
0 A
1 A
2 A
3 A
4 A
Name: 评分, dtype: category
Categories (5, object): [E < D < C < B < A]
名字 投票人数 类型 产地 上映时间 时长 年代 评分 等级
0 美丽人生 42995 剧情/喜剧/爱情 意大利 1997-12-20 116 1997 9.5 A
1 阿甘正传 580897 剧情/爱情 美国 1994-06-23 142 1994 9.4 A
2 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6 A
3 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 116 1957 9.5 A
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 171 1993 9.4 A

 

数据合并

append(上下拼接)

import numpy as np
import pandas as pd
# 读入数据
df=pd.read_csv('data1.txt')
print('原始数据')
print(df) # (1)append(上下拼接)
# 先把数据集拆分为多个,再进行合并
df_1=df[df.产地 =="美国"]
df_2=df[df.产地 == "中国大陆"] df_3=df_1.append(df_2)#append()
print(df_3)

  

原始数据
名字 投票人数 类型 产地 上映时间 时长 年代 评分
0 美丽人生 42995 剧情/喜剧/爱情 意大利 1997-12-20 116 1997 9.5
1 阿甘正传 580897 剧情/爱情 美国 1994-06-23 142 1994 9.4
2 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6
3 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 116 1957 9.5
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 171 1993 9.4 #合并后的数据
名字 投票人数 类型 产地 上映时间 时长 年代 评分
1 阿甘正传 580897 剧情/爱情 美国 1994-06-23 142 1994 9.4
2 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6
3 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 116 1957 9.5
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 171 1993 9.4

merge (左右合并)

# merge: 合并数据集, 通过left, right确定连接字段,默认是两个数据集相同的字段
# 参数 说明
# left 参与合并的左侧DataFrame
# right 参与合并的右侧DataFrame
# how 连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’
# on 用于连接的列名,必须同时存在于左右两个DataFrame对象中,如果位指定,则以left和right列名的交集作为连接键
# left_on 左侧DataFarme中用作连接键的列
# right_on 右侧DataFarme中用作连接键的列
# left_index 将左侧的行索引用作其连接键
# right_index 将右侧的行索引用作其连接键
# sort 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能
# suffixes 字符串值元组,用于追加到重叠列名的末尾,默认为(‘_x’,‘_y’).例如,左右两个DataFrame对象都有‘data’,则结果中就会出现‘data_x’,‘data_y’
# copy 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。默认总是赋值
# ”’
#有朋友总结了使用,所以直接引用了
# https://www.cnblogs.com/lijinze-tsinghua/p/9878649.html

concat():

批量数据合并(两个数据及以上)

上下合并

import numpy as np
import pandas as pd
# 读入数据
df=pd.read_csv('data1.txt')
print('原始数据')
print(df) # (1)append(上下拼接)
# 先把数据集拆分为多个,再进行合并
df_1=df[df.产地 =="美国"]
df_2=df[df.产地 == "中国大陆"] print(pd.concat([df_1,df_2]))

  

原始数据
名字 投票人数 类型 产地 上映时间 时长 年代 评分
0 美丽人生 42995 剧情/喜剧/爱情 意大利 1997-12-20 116 1997 9.5
1 阿甘正传 580897 剧情/爱情 美国 1994-06-23 142 1994 9.4
2 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6
3 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 116 1957 9.5
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 171 1993 9.4
名字 投票人数 类型 产地 上映时间 时长 年代 评分
1 阿甘正传 580897 剧情/爱情 美国 1994-06-23 142 1994 9.4
2 肖申克的救赎 692795 剧情/犯罪 美国 1994-09-10 142 1994 9.6
3 控方证人 42995 剧情/悬疑/犯罪 美国 1957-12-17 116 1957 9.5
4 霸王别姬 478523 剧情/爱情/同性 中国大陆 1993-01-01 171 1993 9.4

  

pandas学习(数据分组与分组运算、离散化处理、数据合并)的更多相关文章

  1. pandas 学习 第14篇:索引和选择数据

    数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...

  2. python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)

    //2019.07.19/20 python中pandas数据分析基础(数据重塑与轴向转化.数据分组与分组运算.离散化处理.多数据文件合并操作) 3.1 数据重塑与轴向转换1.层次化索引使得一个轴上拥 ...

  3. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  4. 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)

    对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...

  5. 利用python进行数据分析之数据聚合和分组运算

    对数据集进行分组并对各分组应用函数是数据分析中的重要环节. group by技术 pandas对象中的数据会根据你所提供的一个或多个键被拆分为多组,拆分操作是在对象的特定轴上执行的,然后将一个函数应用 ...

  6. 《python for data analysis》第九章,数据聚合与分组运算

    # -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...

  7. Python数据聚合和分组运算(1)-GroupBy Mechanics

    前言 Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活.<Python for Data Analysis>这本书第9章详细的介绍了这方面的用法,但是有些细节不常用 ...

  8. python数据分析之:数据聚合与分组运算

    在数据库中,我们可以对数据进行分类,聚合运算.例如groupby操作.在pandas中同样也有类似的功能.通过这些聚合,分组操作,我们可以很容易的对数据进行转换,清洗,运算.比如如下图,首先通过不同的 ...

  9. Python之数据聚合与分组运算

    Python之数据聚合与分组运算 1. 关系型数据库方便对数据进行连接.过滤.转换和聚合. 2. Hadley Wickham创建了用于表示分组运算术语"split-apply-combin ...

随机推荐

  1. HDU小小练

    hdu1253胜利大逃亡(bfs) 题意:就是城堡问题,找出可通行路径即可 思路:三维BFS,设定前后上下左右6个方向搜索,注意开始的时候人站的位置可以是墙. hdu1495非常可乐(bfs) 题意: ...

  2. hud 2554 N对数的排列问题 (规律)

    题目链接 Problem Description 有N对双胞胎,他们的年龄分别是1,2,3,--,N岁,他们手拉手排成一队到野外去玩,要经过一根独木桥,为了安全起见,要求年龄大的和年龄小的排在一起,好 ...

  3. bzoj 4184: shallot (线段树维护线性基)

    题面 \(solution:\) 这一题绝对算的上是一道经典的例题,它向我们诠释了一种新的线段树维护方式(神犇可以跳过了).像这一类需要加入又需要维护删除的问题,我们曾经是遇到过的像莫对,线段树... ...

  4. LibreOJ 题解汇总

    目录 #1. A + B Problem #2. Hello, World! #3. Copycat #4. Quine #7. Input Test #100. 矩阵乘法 #101. 最大流 #10 ...

  5. MPI 在Windows10 上安装,使用VS2013编译生成可执行程序

    原文地址:http://www.cnblogs.com/leijin0211/p/6851789.html 参考博客: http://www.cnblogs.com/shixiangwan/p/662 ...

  6. windows系统安装jdk并设置环境变量

    CLASSPATH:JDK1.5之后的版本不需要配置.安装JDK 选择安装目录 安装过程中会出现两次安装提示 .第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的 ...

  7. windows下设置计划任务自动执行PHP脚本

    背景: 环境部署在linux下或者windows中,可以使用windows的自动任务设置自动执行脚本执行一些日常运维任务 图形界面设置相对比较简单 准备工作: wamp(集成的PHP执行环境) 已经写 ...

  8. 使用rpm包安装lamp环境

    前提: 是你的centos能联网,或者有本地的yum仓库 或者配置通过代理上网 vim /etc/yum.conf 加入如下内容 proxy=http://192.168.11.82:808 1.通过 ...

  9. iframe传递参数问题

    在页面中嵌入了iframe,如果需要传递参数到iframe中 1.通过将参数嵌入到url中,在iframe中使用${param.xxx}可以获取 2.通过将参数存入到session中,在iframe中 ...

  10. javascript判断是用什么设备打开

    var userAgentInfo = navigator.userAgent //查看浏览器用于 HTTP 请求的用户代理头的值 var agents = ["Android", ...