python Pandas中数据的合并与分组聚合
作者:沉迷学习的郑博士 发布时间:2023-06-28 12:48:04
标签:python,pandas,分组,聚合
一、字符串离散化示例
对于一组电影数据,我们希望统计电影分类情况,应该如何处理数据?(每一个电影都有很多个分类)
思路:首先构造一个全为0的数组,列名为分类,如果某一条数据中分类出现过,就让0变为1
代码:
# coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
file_path = "./IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
print(df["Genre"].head(3))
#统计分类的列表
temp_list = df["Genre"].str.split(",").tolist() #[[],[],[]]
genre_list = list(set([i for j in temp_list for i in j]))
#构造全为0的数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(genre_list))),columns=genre_list)
# print(zeros_df)
#给每个电影出现分类的位置赋值1
for i in range(df.shape[0]):
#zeros_df.loc[0,["Sci-fi","Mucical"]] = 1
zeros_df.loc[i,temp_list[i]] = 1
# print(zeros_df.head(3))
#统计每个分类的电影的数量和
genre_count = zeros_df.sum(axis=0)
print(genre_count)
#排序
genre_count = genre_count.sort_values()
_x = genre_count.index
_y = genre_count.values
#画图
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y,width=0.4,color="blue")
plt.xticks(range(len(_x)),_x)
plt.show()
结果:
二、数据合并
2.1 join
join:默认情况下他是把行索引相同的数据合并到一起
2.2 merge
merge:按照指定的列把数据按照一定的方式合并到一起
三、数据的分组和聚合
示例:现在我们有一组关于全球星巴克的店铺的统计数据,如果我想知道美国的星巴克数量和中国的哪个多,或者我想知道中国每个省份的星巴克的数量情况,应该怎么办?
代码:
import pandas as pd
file_path = "./starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)
grouped = df.groupby(by="Country")#按照分组查询
# print(grouped)
#DataFrameGroupBy
#可以进行遍历
# for i,j in grouped:
# print(i)
# print("-"*100)
# print(j,type(j))
# print("*"*100)
# 调用聚合方法
country_count = grouped["Brand"].count()
# print(country_count["US"])
# print(country_count["CN"])
#统计中国每个省店铺的数量
china_data = df[df["Country"] =="CN"]
grouped = china_data.groupby(by="State/Province").count()["Brand"]
# print(grouped)
# 数据按照多个条件进行分组,返回Series
grouped = df["Brand"].groupby(by=[df["Country"],df["State/Province"]]).count()
# print(grouped)
# print(type(grouped))
# 数据按照多个条件进行分组,返回DataFrame
grouped1 = df[["Brand"]].groupby(by=[df["Country"],df["State/Province"]]).count()
grouped2= df.groupby(by=[df["Country"],df["State/Province"]])[["Brand"]].count()
grouped3 = df.groupby(by=[df["Country"],df["State/Province"]]).count()[["Brand"]]
print(grouped1,type(grouped1))
print("*"*100)
print(grouped2,type(grouped2))
print("*"*100)
print(grouped3,type(grouped3))
四、索引
简单的索引操作:
获取index:df.index
指定index:df.index=['x','y']
重新设置index:df.reindex(list("abcdef"))
指定某一行作为index:df.set_index("Country",drop=False)
返回index的唯一值:df.set_index("Country").index.unique()
来源:https://blog.csdn.net/weixin_43238102/article/details/122433136
0
投稿
猜你喜欢
- python语句与语法1.python简单语句的基本介绍>>> while True: #简单的while循环... re
- 导读:由于banner一般用于专题类网站,在门户网站的二级页面,用户进来之前,在首页已经对主题有一定的了解和认识,所以banner的作用是在
- 用javascript实现Base64编码—解决中文问题因javascript求出来的是Unicode要转换成Ansi后才能对它进行Base
- 这篇文章主要介绍了Python urlopen()和urlretrieve()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作
- 无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充
- 看了很多网上的方法,写入文件后打开文件看确实不再是乱码,但是从文件中读入json时发现了乱码,可能是读文件默认的编码格式不对。下面读写方法可
- 作者:Lachlan Hunt概要网络是不断的进化的. 新的和有创意的网站每天都在出现, 从各方面都在冲击着HTML的边界. HTML 4来
- python安装库的几种方法 在python项目开发的过程中,需要安装大大小小的库,本文会提供几种安装库的方法,总有
- 在许多网页中,当鼠标移到一张图片上时,又弹出另一张图片,做这种广告条,要用到Macromedia DreamWeaver中的Lay
- 目录什么是 JSON在哪里使用JSON基本的 JSON 语法如何在 Python 中处理 JSON 数据包含 JSON 模块使用 json.
- [参与测试的浏览器:IE6 / IE7 / IE8 / FF3 / OP10 / SF4 / Chrome2 ][操作系统:Windows]
- 这篇文章主要介绍了python matplotlib给图中的点加标签,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- js实现千分符转化function fmoney(s, n){ n = n > 0 && n <= 20 ? n
- 今天用要django传值给模板, 然后需要用js处理一下.特此记录.用json.dumps()方法将值传给模板.import json re
- 1.直方图直方图: (1) 图像中不同像素等级出现的次数 (2) 图像中具有不同等级的像素关于总像素数目的比值。我们使用cv2.calcHi
- 一、函数入门1.概念函数是可以重复执行一定任务的代码片段,具有独立的固定的输入输出接口。函数定义的本质,是给一段代码取个名字,方便以后重复使
- 以下各种方式仅供参考,本人亲测只有官方提供的方式比较靠谱。1. 使用多个进程启动多个Tornado实例import tornado.http
- 微信小程序request请求后台接口php的实例详解后台php接口:http://www.vueyun.com/good/info没有处理数
- pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,使用方法:from pyquery import PyQue
- 简介LRU(Least Recently Used)最近最少使用,最近有时间和空间最近的歧义,所以我更喜欢叫它近期最少使用算法。它的核心思想