pandas学习(数据分组与分组运算、离散化处理、数据合并)
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学习(数据分组与分组运算、离散化处理、数据合并)的更多相关文章
- pandas 学习 第14篇:索引和选择数据
数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...
- python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)
//2019.07.19/20 python中pandas数据分析基础(数据重塑与轴向转化.数据分组与分组运算.离散化处理.多数据文件合并操作) 3.1 数据重塑与轴向转换1.层次化索引使得一个轴上拥 ...
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...
- 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)
对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...
- 利用python进行数据分析之数据聚合和分组运算
对数据集进行分组并对各分组应用函数是数据分析中的重要环节. group by技术 pandas对象中的数据会根据你所提供的一个或多个键被拆分为多组,拆分操作是在对象的特定轴上执行的,然后将一个函数应用 ...
- 《python for data analysis》第九章,数据聚合与分组运算
# -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...
- Python数据聚合和分组运算(1)-GroupBy Mechanics
前言 Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活.<Python for Data Analysis>这本书第9章详细的介绍了这方面的用法,但是有些细节不常用 ...
- python数据分析之:数据聚合与分组运算
在数据库中,我们可以对数据进行分类,聚合运算.例如groupby操作.在pandas中同样也有类似的功能.通过这些聚合,分组操作,我们可以很容易的对数据进行转换,清洗,运算.比如如下图,首先通过不同的 ...
- Python之数据聚合与分组运算
Python之数据聚合与分组运算 1. 关系型数据库方便对数据进行连接.过滤.转换和聚合. 2. Hadley Wickham创建了用于表示分组运算术语"split-apply-combin ...
随机推荐
- adb不识别设备(手机)的若干情形及解决方法
1.执行adb root 提示adb: unable to connect for root: no devices/emulators found:执行adb devices ,List下无设备 ...
- 图片的Base64编码
Base64编码是一种图片处理格式,通过特定的算法将图片编码成一长串字符串,在页面上显示的时候,可以用该字符串来代替图片的url属性. 我们可以来看一下实际的效果 Base64编码效果 在上图中,我们 ...
- jquery 操作表单的问题
下拉框获取选中项的值: $("#ID").find("option:selected").val(); 设置下拉框选中项: $("#ID") ...
- Linux下锁定账号,禁止登录系统的设置总结【转】
在我们运维工作中,会经常要求一些用户不允许登陆系统,以加固系统安全.今天这里介绍下锁定账号登陆的几种方法: (推荐使用)这种方式会更加人性化一点,因为不仅可以禁止用户登录,还可以在禁用登陆时给提示告诉 ...
- oem 重建
OracleDBControl启动失败to local from URL=http://your-url.co 方法: emca -deconfig dbcontrol db -repos d ...
- dellR720服务器设置光盘引导流程安装cenos7
1.开机,按F10,进入系统引导界面,选择加载系统选项,并选择redhat 7.1选项 系统提示不支持,选择仍然继续,根据提示设置BIOS设置启动,重启 2.根据提示按F11进入BIOS启动设置,选择 ...
- FreeSWITCH Git版本管理
由于测试FreeSWITCH不同版本的需要,研究了下Git的使用,通过Git来管理所有的版本,方便了测试.以下就总结下具体的使用方法: 其中:git clone ..是现在git仓库:git tag ...
- Android OAuth认证
OAuth认证 为了安全地访问在线服务,用户需要在服务上进行身份验证,即要提供他们的身份的证明.对于一个要访问第三方服务的程序来说,安全问题甚至更复杂.不仅仅是用户需要在访问服务前要进行身份验证,而且 ...
- android-----带你一步一步优化ListView(一)
ListView作为android中最常使用的控件,可以以条目的形式显示大量的数据,经常被用于显示最近联系人列表,对于每一个 Item,均要求adapter的getView方法返回一个View,因此L ...
- == 和 equal 区别
在初学 Java 时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = new String(" ...