使用pandas做简单的数据分析

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

电影数据的形式如下,我们需要统计出Genre列中出现的电影分类的情况,即每种分类出现了多少次
在这里插入图片描述
思路:重新构造一个全为0的二维数组,列名为分类,如果某一条数据中分类出现过,就让0变为1

1.先构造一个全0的数组,行代表每一部电影,有1000部;列代表1000部电影中所有包含的分类(不能重复)。

df = pd.read_csv("./data/Movie-Data.csv")

# 统计分类的列表
temp_list = df["Genre"].str.split(",").tolist()  # 当前list的结构[[],[],[]]
# 取出每个电影分类,放到set里面(去重),再转为list
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)

效果:
在这里插入图片描述
2.遍历每部电影,将电影对应分类的位置置为1

# 给每个电影出现分类的位置赋值1
for i in range(df.shape[0]):
    # 通过标签索引行数据,此处实际操作了一行多列数据  参数二:是对应第i行电影的电影分类list
    zeros_df.loc[i, temp_list[i]] = 1

打印先三行的效果,注意中间数据过长没有显示全,而不是没有效果
在这里插入图片描述

3.对上面这个赋值过的数组,在0轴方向求和
在这里插入图片描述
4.可视化展示
在这里插入图片描述

数据集在kaggle上可以免费下载,需要数据集可以留言

完整代码:

import pandas as pd
import numpy as np

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

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

"""

df = pd.read_csv("./data/Movie-Data.csv")

# 统计分类的列表
temp_list = df["Genre"].str.split(",").tolist()  # 当前list的结构[[],[],[]]
# 取出每个电影分类,放到set里面(去重),再转为list
genre_list = list(set([i for j in temp_list for i in j]))

# print(genre_list)

# 构造全为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]):
    # 通过标签索引行数据,此处实际操作了一行多列数据  参数二:是对应第i行电影的电影分类list
    zeros_df.loc[i, temp_list[i]] = 1

# print(zeros_df.head(3))

# 统计每个分类的电影的数量和
genre_count = zeros_df.sum(axis=0)
print(genre_count)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章