pandas基础内容可跳转之前文章
Pandas入门详细教程(一)
pandas常用统计方法
对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?
思路:重新构造一个全为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))
# 统计分类的列表 tolist数组转换为列表
temp_list = df["Genre"].str.split(",").tolist()
# 使用set 启到去重的目的
genre_list = list(set([i for j in temp_list for i in j]))
# 构造全为0的数组 columns是每个分类
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[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 = "orange")
plt.xticks(range(len(_x)) ,_x)
plt.show()
打印结果为:
0 Action,Adventure,Sci-Fi