电影数据简要统计与分析总结

电影数据简要统计与分析总结

1、数据采集的途径(pandas自带的csv文件读取,本地操作):

import pandas as pd 
# 从文件read_csv中获取数据
film = pd.read_csv('film.csv',names=['date','filmname','BOR'])#列名需要通过列表的形式传入,另外sep分隔符默认指定为逗号

‘’‘Read_csv参数:https://blog.csdn.net/superbetterman/article/details/104753358/
                https://blog.csdn.net/shanmou1782/article/details/90441391
                https://www.cnblogs.com/datablog/p/6127000.html’
                
# 输出从文件中读取的部分结果
film.head()#返回的对象类型为pandas.core.frame.DataFrame
          Date Filmname      BOR
0   2010-05-09    唐山大地震  51315.0
1   2010-05-16      老男孩   1599.0
2   2010-05-23       剑雨   2224.0
3   2010-05-23       剑雨      NaN
4   2010-05-23      老男孩   1605.0


#DataFrame自带数据切分
film[0:2]#取的为第0行到第1行的数据,并且左闭右开
film['Date']/film[['Date','Filmname']]#通过列标签来获取列数据
#取行取列可以组合使用      

#iloc方法的使用
.iloc[行索引位,[列索引位,列索引位....]]#第二个参数为可选参数,需要前面或者两者参数共同为列表时才能返回Dataframe
前者连接的方式可以是逗号、不加符号或者冒号,如果是冒号的话是左闭右开,前者需要加冒号表示列表类型,后者需要加列表来转换类型,并且连接的符号需要是逗号,或者不加
#例子
film.iloc[0:1]/film.iloc[1] #取行
film.iloc[:,[0,1]]#取所有行,取第一列以及第二列的数据

#loc方法使用
.loc[行标签,[列标签,列标签,列标签]]#第二个参数为可选参数,需要前面以及两者参数共同的基础上都为列表的时候才能返回Dataframe
前者连接的方式可以是逗号、不加符号或者冒号,如果是冒号的话是左闭右开,前者需要加冒号表示列表类型,后者需要加列表来转换类型,并且连接的符号需要是逗号,或者不加
film.loc[:,['Date','Filmname']]#取所有行,再取Date以及Filmname两列
film.loc[0:1]/film.loc[0]#取行

在这里插入图片描述
2、数据解析/数据预处理(通过pandas模块进行处理):1、数据检查 2、数据清洗 3、数据筛选
在这里插入图片描述

  • 数据检查
  • 数据清洗(阶段1)
#在原先数据采集的基础上进行操作
#nan指的意思是not a  number的意思
film = film.dropna()#删除dateframe当中的含有空值的行
film = film.fillna(0)#将dateframe当中的空值换成0
film = film.drop_duplicates()#如果是不指明列名的情况下,将dateframe当中的重复行删除,如果需要指定列名以列表的形式传递参数

数据筛选

#如果想要筛选带有条件的dataframe,需要以列表的形式来加条件

film = film[film.film == '老男孩']筛选出filmname为老男孩的数据
film[‘date’] = pd.to_datetime(film[‘date’])#需要先对字符串进行格式转换
#括号保证运算级别,&保证是且运算
film3 = film[ (film[‘date’]>2010-5-15) & (film[‘date’] <=2010-5-31)]

3、数据分析(通过pandas分析)

  • 通过描述统计的方法来反映数据集中趋势、离散程度、相关强度的具有外在代表性的指标(分组、聚合函数这类)。
#在原先数据采集的基础上进行操作
film.groupby(['filmname',as_index=False])['BOR'].sum()#as_index默认为True,它的作用对于聚合输出而言,决定索引是否以组标签的形式展现。
     Filmname	 BOR
0	X战警-天启	1523815.0
1	剑雨	        15669.0
2	唐山大地震	671379.0
3	老男孩	        22382.0
4	让子弹飞	        1176397.0

#https://www.cnblogs.com/Allen-rg/p/10546642.html 解释as_index的作用
https://blog.csdn.net/jiebutianxia/article/details/82216428#记录聚合函数的种类
#groupby()需要指明对象以及列表形式的列名,as_index则用来指明相应的行索引还是列索引
#聚合函数通过指定字段来进行运算其相关特征,sum()代表求和,median()代表中位数,mean*()代表平均值
  • 在前者基础上,通过机器学习的方法来对数据进行预测、推断

4、数据可视化(通过Matplotlib来展示):数据可视化比较依赖于数据解析、数据分析的结果

#pandas 读取 Csv数据
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']#设置字体格式,防止显示不出
plt.rcParams['axes.unicode_minus'] = False#设置字符格式,防止显示不出来
film = pd.read_csv("film.csv",sep = ",",names = ['Date','Filmname','BOR'])
film = film.dropna()
film2 = film.groupby("Filmname",as_index=False)['BOR'].sum()
film2
plt.bar(film2['Filmname'],film2['BOR'],color='Green',width=0.4)
plt.title("各大电影票房统计")#设置标题
plt.xlabel("电影名称")#设置横坐标
plt.ylabel("票房")#设置纵作表
plt.legend(["电影票房收入"])#设置图例
for x,y in zip(film2['Filmname'],film2['BOR']):#
    plt.text(x,y,'%.2f'%y,ha='center', va='bottom')#设置数据标签
plt.show()

#zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

在这里插入图片描述

发布了6 篇原创文章 · 获赞 1 · 访问量 192

猜你喜欢

转载自blog.csdn.net/tomm5/article/details/105153250