在学习 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 行数据。
划重点
- info( ) 查看数据有哪些字段和字段对应的数据类型
- describe( ) 对数值型变量进行统计性描述
- head( n ) 显示数据前 n 行
- tail( n ) 显示数据后 n 行
网友评论