栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据科学库Python——Pandas数据合并与分组聚合

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据科学库Python——Pandas数据合并与分组聚合

假设现在我们有一组从2006年到2016年1000部最流行的电影数据

如果我们希望统计电影分类(genre)的情况,应该如何处理数据?

数据来源:https://www.kaggle.com/damianpanek/sunday-eda/data

第一步:先读取数据,了解基本信息

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)
df.head(1)

输出结果为:

 包含的信息分别有:rank、Tittle等12条信息。

df.shape

>>> (1000, 12) 一共有1000条数据,每条数据包含12列的信息。

我们要统计电影分类,先看看Genre数据的大致模样。

print(df["Genre"].head(3))
>>>
0     Action,Adventure,Sci-Fi
1    Adventure,Mystery,Sci-Fi
2             Horror,Thriller
3     Animation,Comedy,Family
4    Action,Adventure,Fantasy
Name: Genre, dtype: object

对于这一组电影数据,我们希望统计电影分类(genre)的情况,应该如何处理数据?

思路:重新构造一个全为0的数组,列名为分类,如果某一条数据中分类出现过,就让0变为1。

统计分类的列表

temp_list = df["Genre"].str.split(",").tolist()
print(temp_list)

>>>

每一部电影的分类有多个,我们这个时候为了方便表示,可以用一个数组来表示每一部电影的分类情况。

genre_list = list(set([i for j in temp_list for i in j]))
genre_list[0:3]

>>>

['Family', 'Music', 'Horror']

 构造全为0的数组

zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(genre_list))),columns = genre_list)
zeros_df.head()

# 给每个电影出现分类的位置赋值1
for i in range(df.shape[0]):
    zeros_df.loc[i,temp_list[i]] = 1
    pass
print(zeros_df)

>>>

 

 #统计每个分类的电影的数量和
genre_count = zeros_df.sum(axis=0)
print(genre_count)

>>>

#排序
genre_count = genre_count.sort_values()
_x = genre_count.index
_y = genre_count.values
genre_count.head(20)

>>>

#画图
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y,width=0.8,color="orange")
plt.xticks(range(len(_x)),_x)
plt.show()

>>>

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958441.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号