Pandas 教程——筛选让你动心的电影(1)

浏览: 1748

在学习 Pandas 之前,首先需要安装 Pandas,在 Python 中安装模块使用 pip install 模块名 即可,但因为 Pandas 依赖于很多包,所以直接安装的话很大概率会遇到各种各样的问题。


建议直接安装 Anaconda,省时省心,Anaconda 会默认安装众多流行的科学、数学、工程、数据分析的模块,比如 Numpy、Scipy、Matplotlib、Pandas 等,同时可以方便地对各种模块进行管理, 搭配着使用 Python 编辑器 Pycharm,干活绝对不累。安装时请注意区分不同的版本,本教程使用的是 Python 2.7。


一切就绪后,开始读取电影数据文件 (下载),看看数据都有啥

import pandas as pd

movie_pd = pd.read_csv('douban_movie.csv', header = 0, sep = '\t')
print movie_pd.info()

pd.read_csv( ) 负责把 csv 文件读入进来,关于文件的读取操作之后会专门讲,这里先不用太在意,把数据跑起来再说,然后 movie_pd.info( ) 输出如下:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3688 entries, 0 to 3687
Data columns (total 16 columns):
actor_count 3688 non-null int64
actors 3688 non-null object
category 3688 non-null object
cover_url 3688 non-null object
id 3688 non-null int64
is_playable 3688 non-null bool
is_watched 3688 non-null bool
rank 3688 non-null int64
rating 3688 non-null object
regions 3688 non-null object
release_date 3688 non-null object
score 3688 non-null float64
title 3688 non-null object
types 3688 non-null object
url 3688 non-null object
vote_count 3688 non-null int64
dtypes: bool(2), float64(1), int64(4), object(9)
memory usage: 410.6+ KB
None


这个输出的信息量很大,有索引、列名、列的数据类型 ( int64、bool、float64、object )。


可以看出电影数据共有 16 列,列名分别是:actor_count (主演的人数)、actors (主演列表)、category (分类)、cover_url (封面图片网址)、id (电影id)、is_playable (是否可以播放)、is_watched (是否可以观看)、rank (排名)、rating (评分, 含星级)、regions (制片国家)、release_date (上映日期)、score (评分)、title (电影标题)、types (类型, 多个)、url (电影详情页网址)、vote_count (评价的人数)。


对应的豆瓣电影页面如下:

test.jpg


然后接着看看能不能得到一些定量的数据

print movie_pd.describe()

输出的结果如下:

actor_count            id         rank        score     vote_count
count 3688.000000 3.688000e+03 3688.000000 3688.000000 3688.000000
mean 8.418655 3.655456e+06 124.189534 8.522587 71773.012744
std 6.067463 6.095063e+06 116.329492 0.394342 119190.948797
min 0.000000 1.291543e+06 1.000000 7.300000 305.000000
25% 4.000000 1.296384e+06 36.000000 8.300000 3513.000000
50% 7.000000 1.307067e+06 87.000000 8.500000 15786.000000
75% 12.000000 2.150085e+06 177.000000 8.800000 85188.000000
max 54.000000 2.710254e+07 534.000000 9.700000 875424.000000

可以看出,对于变量类型是 int64 和 float64 的数值型变量,列出了个数、均值、方差、最小值、最大值和四分位数。比如这些电影平均 vote_count 是 71773 人,最多有 875424 个人对某个电影进行了评分,电影平均 score 高达 8.5 分等。

最后,看看原始数据长什么样子

print movie_pd.head()
print movie_pd.tail()

输出结果如下:

actor_count                  actors                category
0 19 [张国荣, 张丰毅, 巩俐, 葛优... 同性
1 10 [伊恩·麦克莱恩, 德里克·雅各比... 同性
2 5 [蒂莫西·柴勒梅德, 艾米·汉莫... 同性
3 3 [张国荣, 梁朝伟, 张震] 同性
4 5 [赵文瑄, 归亚蕾, 金素梅, 郎雄...] 同性
cover_url id is_playable
0 https://img3.doubanio.com/view/movie_... 1291546 True
1 https://img3.doubanio.com/view/movie_... 26700818 False
2 https://img3.doubanio.com/view/movie_... 26799731 False
3 https://img3.doubanio.com/view/movie_... 1292679 False
4 https://img3.doubanio.com/view/movie_... 1303037 False

is_watched rank rating regions release_date score
0 False 1 [9.5, 50] [中国大陆, 香港] 1993-01-01 9.5
1 False 2 [9.3, 50] [英国] 2016-06-19 9.3
2 False 3 [9.3, 50] [意大利, 法国...] 2017-01-22 9.3
3 False 4 [8.8, 45] [香港, 日本, 韩国] 1997-05-30 8.8
4 False 5 [8.8, 45] [台湾, 美国] 1993-08-04 8.8

title types
0 霸王别姬 [剧情, 爱情, 同性]
1 极品基老伴:完结篇 [喜剧, 同性]
2 请以你的名字呼唤我 [爱情, 同性]
3 春光乍泄 [剧情, 爱情, 同性]
4 喜宴 [剧情, 喜剧, 爱情, 同性, 家庭]

url vote_count
0 https://movie.douban.com/subject/1291546/ 629403
1 https://movie.douban.com/subject/26700818/ 13516
2 https://movie.douban.com/subject/26799731/ 739
3 https://movie.douban.com/subject/1292679/ 240127
4 https://movie.douban.com/subject/1303037/ 133193


head( ) 方法会默认显示出 movie_pd 的前 5 行数据

tail( ) 方法会默认显示 movie_pd 的后 5 行数据

如果想要显示多于 5 行的数据怎么办呢?传入参数可以,比如 movie_pd.head(10) 表示显示前 10 行数据,tail(20) 表示显示后 20 行数据。



划重点

  • info( )           查看数据有哪些字段和字段对应的数据类型
  • describe( )   对数值型变量进行统计性描述
  • head( n )      显示数据前 n 行
  • tail( n )         显示数据后 n 行
推荐 3
本文由 数分 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册