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

2019-03-16  本文已影响0人  数分进阶

在学习 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 (评价的人数)。

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

image

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

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 行数据。

划重点

上一篇下一篇

猜你喜欢

热点阅读