python Pandas中数据的合并与分组聚合
作者:沉迷学习的郑博士 时间:2023-06-28 12:48:04
一、字符串离散化示例
对于一组电影数据,我们希望统计电影分类情况,应该如何处理数据?(每一个电影都有很多个分类)
思路:首先构造一个全为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
标签:python,pandas,分组,聚合


猜你喜欢
在import scipy.misc 后找不到 imsave的解决方案
2023-08-09 05:21:45

django数据库迁移migration实现
2024-01-12 19:29:43

Python数学建模库StatsModels统计回归简介初识
2021-05-05 04:57:02
Navicat for SQLite导入csv中文数据的方法
2024-01-22 18:56:26

python opencv对图像进行旋转且不裁剪图片的实现方法
2023-03-12 02:40:09
CSS绝对定位在宽屏分辨率下错位
2009-07-28 12:24:00
Python NumPy教程之数组的基本操作详解
2021-08-15 16:20:12
Pytorch保存模型用于测试和用于继续训练的区别详解
2021-12-02 08:49:39
用python修改excel表某一列内容的操作方法
2022-01-22 20:51:29

jupyter notebook指定启动目录的方法
2022-05-19 18:53:01
Python函数必须先定义,后调用说明(函数调用函数例外)
2022-03-06 18:03:53

Vue图片裁剪功能实现代码
2024-05-29 22:50:11

pytest-fixture简介及其用法讲解
2023-02-13 19:27:25
MySQL 利用frm文件和ibd文件恢复表数据
2024-01-28 08:46:53
python使用turtle库绘制树
2022-04-14 09:09:06
Python手绘可视化工具cutecharts使用实例
2022-12-25 07:27:54

python list使用示例 list中找连续的数字
2022-10-16 19:49:46
vue实现动态路由详细
2024-05-05 09:25:19
亲自教你使用 ChatGPT 编写 SQL JOIN 查询示例
2024-01-14 18:54:01

python实现杨氏矩阵查找
2021-09-28 15:03:26