Pandas的常用操作(一)

Pandas (Series, Dataframe)

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘,清洗和数据分析。

import pandas as pd
import numpy as np

pandas之Series

s1 = pd.Series([1,5,6, np.nan, 8]) #设置默认索引
s1
0    1.0
1    5.0
2    6.0
3    NaN
4    8.0
dtype: float64
s2 = pd.Series([1,2,5,6, np.nan, 8], index=['a','b','c','d','f','e'])
s2
a    1.0
b    2.0
c    5.0
d    6.0
f    NaN
e    8.0
dtype: float64
s1.index  # 一个可迭代对对象 可使用list()或for循环查看所有元素
RangeIndex(start=0, stop=5, step=1)
s2.index
Index(['a', 'b', 'c', 'd', 'f', 'e'], dtype='object')
s1.values
array([ 1.,  5.,  6., nan,  8.])
s1[1], s2['f'] # 基本的索引方式
(5.0, nan)
s1[2:5]  # 切片操作 
2    6.0
3    NaN
4    8.0
dtype: float64
s1[::2] # 步长为2的方式选取偶数列
0    1.0
2    6.0
4    8.0
dtype: float64
s1[::-1] # 和numpy的操作一致
4    8.0
3    NaN
2    6.0
1    5.0
0    1.0
dtype: float64
s1.index.name='索引'   # 为索引列设置列名
s1
索引
0    1.0
1    5.0
2    6.0
3    NaN
4    8.0
dtype: float64
s1.index=list('qwert')
s1
q    1.0
w    5.0
e    6.0
r    NaN
t    8.0
dtype: float64
s1['q':'t']  # 再次使用修改后的索引进行切片 该次切片为闭区间 即切片区间的所有值均被包涵
q    1.0
w    5.0
e    6.0
r    NaN
t    8.0
dtype: float64

Pandas之DataFrame

类似于excel的二维结构表

dates = pd.date_range('20190101', periods=10) # 生成一组时间序列的数据
dates
# 更多关于时间的使用  https://www.pypandas.cn/docs/user_guide/timeseries.html#纵览
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
               '2019-01-05', '2019-01-06', '2019-01-07', '2019-01-08',
               '2019-01-09', '2019-01-10'],
              dtype='datetime64[ns]', freq='D')
# 使用二维列表
df = pd.DataFrame(np.random.randn(3,4)) # 使用随机正态分布 未指定任何索引
df
0 1 2 3
0 1.036552 0.015281 0.261149 -0.309629
1 1.702508 -0.537734 0.249056 -2.756529
2 1.488354 -0.253307 -0.189234 -0.209206
df.index=dates[:3] # 或者在生成df时指定index 和 columns参数
df.columns=list('ABCD')
df
A B C D
2019-01-01 1.036552 0.015281 0.261149 -0.309629
2019-01-02 1.702508 -0.537734 0.249056 -2.756529
2019-01-03 1.488354 -0.253307 -0.189234 -0.209206
# 使用字典方式
dic = {'A':dates[:4], "B":'www', 'C':pd.Series(1, index=list(range(4)), dtype='float'), 'D':pd.Categorical(['a','b','c','d']), 'E':np.array([2]*4, dtype='int')}
df2 = pd.DataFrame(dic)
df2
A B C D E
0 2019-01-01 www 1.0 a 2
1 2019-01-02 www 1.0 b 2
2 2019-01-03 www 1.0 c 2
3 2019-01-04 www 1.0 d 2

数据的查看

#### tail head 方法 查看前后几行 
df.head(2)
A B C D
2019-01-01 1.036552 0.015281 0.261149 -0.309629
2019-01-02 1.702508 -0.537734 0.249056 -2.756529
df.tail(2)
A B C D
2019-01-02 1.702508 -0.537734 0.249056 -2.756529
2019-01-03 1.488354 -0.253307 -0.189234 -0.209206

数据类型的查看

df2.dtypes
A    datetime64[ns]
B            object
C           float64
D          category
E             int64
dtype: object
df2.index, df.columns, df.values
(Int64Index([0, 1, 2, 3], dtype='int64'),
 Index(['A', 'B', 'C', 'D'], dtype='object'),
 array([[ 1.03655175,  0.015281  ,  0.26114947, -0.30962948],
        [ 1.70250785, -0.53773376,  0.24905637, -2.75652867],
        [ 1.48835421, -0.25330726, -0.18923441, -0.209206  ]]))
df = pd.read_csv('./part.csv') # 读取csv格式数据
df
Unnamed: 0 电影名称 评分 评价人数 5星人数 4星人数 3星人数 2星人数 1星人数 短评数量 ... 制片国家/地区 语言 上映日期 片长 豆瓣网址 官方网址 IMDb链接 宣传海报链接 剧情简介 总分
0 0 肖申克的救赎 The Shawshank Redemption 9.6 1353097 84.1% 14.1% 1.6% 0.1% 0.1% 265551 ... 美国 英语 1994-09-10(多伦多电影节)/1994-10-14(美国) 142.0 https://movie.douban.com/subject/1292052/ NaN http://www.imdb.com/title/tt0111161 https://img3.doubanio.com/view/photo/s_ratio_p... 20世纪40年代末,小有成就的青年银行家安迪(蒂姆·罗宾斯TimRobbins饰)因涉嫌杀害... 12989731.2
1 1 这个杀手不太冷 Léon 9.4 1226642 74.1% 22.4% 3.3% 0.2% 0.1% 224430 ... 法国 英语 / 意大利语 / 法语 1994-09-14(法国) 110.0 https://movie.douban.com/subject/1295644/ NaN http://www.imdb.com/title/tt0110413 https://img3.doubanio.com/view/photo/s_ratio_p... 里昂(让·雷诺饰)是名孤独的职业杀手,受人雇佣。一天,邻居家小姑娘马蒂尔达(纳塔丽·波特曼饰... 11530434.8
2 2 阿甘正传 Forrest Gump 9.4 1059710 75.5% 21.1% 3.1% 0.2% 0.1% 175071 ... 美国 英语 1994-06-23(洛杉矶首映)/1994-07-06(美国) 142.0 https://movie.douban.com/subject/1292720/ NaN http://www.imdb.com/title/tt0109830 https://img1.doubanio.com/view/photo/s_ratio_p... 阿甘(汤姆·汉克斯饰)于二战结束后不久出生在美国南方阿拉巴马州一个闭塞的小镇,他先天弱智,智... 9961274.0
3 3 盗梦空间 Inception 9.3 1065943 69.7% 25.7% 4.2% 0.3% 0.2% 219175 ... 美国 / 英国 英语 / 日语 / 法语 2010-09-01(中国大陆)/2010-07-16(美国) 148.0 https://movie.douban.com/subject/3541415/ NaN http://www.imdb.com/title/tt1375666 https://img3.doubanio.com/view/photo/s_ratio_p... 道姆·柯布(莱昂纳多·迪卡普里奥LeonardoDiCaprio饰)与同事阿瑟(约瑟夫·戈登... 9913269.9
4 4 霸王别姬 9.6 993975 81.3% 16.2% 2.3% 0.2% 0.1% 214889 ... 中国大陆 / 香港 汉语普通话 1993-01-01(香港) 171.0 https://movie.douban.com/subject/1291546/ NaN http://www.imdb.com/title/tt0106332 https://img3.doubanio.com/view/photo/s_ratio_p... 段小楼(张丰毅)与程蝶衣(张国荣)是一对打小一起长大的师兄弟,两人一个演生,一个饰旦,一向配... 9542160.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
995 995 摆渡人 4.0 177208 4.1% 7.0% 19.9% 24.4% 44.5% 72738 ... 中国大陆 / 香港 汉语普通话 2016-12-23(中国大陆) 128.0 https://movie.douban.com/subject/25911694/ NaN http://www.imdb.com/title/tt3824950 https://img3.doubanio.com/view/photo/s_ratio_p... 摆渡人是城市里的超级英雄,摆渡就是把人从痛苦中解救出来。用快乐和温暖,抵抗这个世界的悲伤。 708832.0
996 996 逃学威龙2 逃學威龍2 7.4 95760 17.2% 41.7% 37.6% 3.1% 0.4% 6008 ... 香港 粤语 1992-04-09(香港) 97.0 https://movie.douban.com/subject/1296201/ NaN http://www.imdb.com/title/tt0105534 https://img3.doubanio.com/view/photo/s_ratio_p... 周星星(周星驰饰)圆满完成了校园任务后,以为可以升职,偏偏被调为交通警察。跟他一样立功的曹达... 708624.0
997 997 小鬼当家2 Home Alone 2: Lost in New York 7.8 90819 20.8% 51.9% 25.8% 1.3% 0.1% 6007 ... 美国 英语 1992-11-20(美国) 120.0 https://movie.douban.com/subject/1293353/ NaN http://www.imdb.com/title/tt0104431 https://img3.doubanio.com/view/photo/s_ratio_p... 又一年圣诞节来临,上集因被遗忘在家而没有去成圣诞旅游的凯文(麦考利·卡尔金MacaulayC... 708388.2
998 998 全民情敌 Hitch 7.5 94268 14.9% 49.0% 33.9% 2.0% 0.2% 11489 ... 美国 英语 2005-02-11(美国) 118.0 https://movie.douban.com/subject/1309020/ NaN http://www.imdb.com/title/tt0386588 https://img3.doubanio.com/view/photo/s_ratio_p... 希什(威尔•史密斯WillSmith饰)十分准确的把握了男性的弱点:他们在求爱的时候由于过分... 707010.0
999 999 被偷走的那五年 5.9 119766 5.8% 17.7% 46.6% 23.2% 6.7% 36023 ... 中国大陆 汉语普通话 2013-08-29(中国大陆) 111.0 https://movie.douban.com/subject/20513059/ NaN http://www.imdb.com/title/tt3175936 https://img3.doubanio.com/view/photo/s_ratio_p... 浪漫美好的蜜月之旅,突然以一场车祸戛然而止。曾经沉浸在无上幸福中的何蔓(白百何饰)从昏迷中醒... 706619.4

1000 rows × 25 columns

df = df[['电影名称','评分','类型','评价人数','片长','上映日期','总分','导演']] # 数据太过于繁杂 指定部分列用于下列分析
df
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
0 肖申克的救赎 The Shawshank Redemption 9.6 剧情/犯罪 1353097 142.0 1994-09-10(多伦多电影节)/1994-10-14(美国) 12989731.2 弗兰克·德拉邦特
1 这个杀手不太冷 Léon 9.4 剧情/动作/犯罪 1226642 110.0 1994-09-14(法国) 11530434.8 吕克·贝松
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.0 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯
3 盗梦空间 Inception 9.3 剧情/科幻/悬疑/冒险 1065943 148.0 2010-09-01(中国大陆)/2010-07-16(美国) 9913269.9 克里斯托弗·诺兰
4 霸王别姬 9.6 剧情/爱情/同性 993975 171.0 1993-01-01(香港) 9542160.0 陈凯歌
... ... ... ... ... ... ... ... ...
995 摆渡人 4.0 喜剧/爱情 177208 128.0 2016-12-23(中国大陆) 708832.0 张嘉佳
996 逃学威龙2 逃學威龍2 7.4 喜剧 95760 97.0 1992-04-09(香港) 708624.0 陈嘉上
997 小鬼当家2 Home Alone 2: Lost in New York 7.8 喜剧 90819 120.0 1992-11-20(美国) 708388.2 克里斯·哥伦布
998 全民情敌 Hitch 7.5 喜剧/爱情 94268 118.0 2005-02-11(美国) 707010.0 安迪·坦纳特
999 被偷走的那五年 5.9 爱情 119766 111.0 2013-08-29(中国大陆) 706619.4 黄真真

1000 rows × 8 columns

数据的索引

df.iloc[10] # 通过iloc进行索引
电影名称                        怦然心动 Flipped
评分                                     9
类型                              剧情/喜剧/爱情
评价人数                              852841
片长                                    90
上映日期    2010-07-26(好莱坞首映)/2010-09-10(美国)
总分                           7.67557e+06
导演                                 罗伯·莱纳
Name: 10, dtype: object
df.iloc[:4] # 如果使用loc则表示完全闭区间索引
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
0 肖申克的救赎 The Shawshank Redemption 9.6 剧情/犯罪 1353097 142.0 1994-09-10(多伦多电影节)/1994-10-14(美国) 12989731.2 弗兰克·德拉邦特
1 这个杀手不太冷 Léon 9.4 剧情/动作/犯罪 1226642 110.0 1994-09-14(法国) 11530434.8 吕克·贝松
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.0 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯
3 盗梦空间 Inception 9.3 剧情/科幻/悬疑/冒险 1065943 148.0 2010-09-01(中国大陆)/2010-07-16(美国) 9913269.9 克里斯托弗·诺兰
# 指定行列检索 df.loc[[indexs], [columns]]
df.loc[[1,2,3,5,7], ['导演', '电影名称']]
导演 电影名称
1 吕克·贝松 这个杀手不太冷 Léon
2 罗伯特·泽米吉斯 阿甘正传 Forrest Gump
3 克里斯托弗·诺兰 盗梦空间 Inception
5 詹姆斯·卡梅隆 泰坦尼克号 Titanic
7 宫崎骏 千与千寻 千と千尋の神隠し
df[['电影名称', '评分']][:5] # 取多列数据
电影名称 评分
0 肖申克的救赎 The Shawshank Redemption 9.6
1 这个杀手不太冷 Léon 9.4
2 阿甘正传 Forrest Gump 9.4
3 盗梦空间 Inception 9.3
4 霸王别姬 9.6
# 添加行数据
row = {'电影名称':'熊大', '评分':7.8, '类型':'科幻', '评价人数':'12345', '片长':np.nan,'上映日期':'2019-01-01(中国)', '总分':123843, '导演':'熊二'}
row = pd.Series(row)
row.name=1000  #设置name属性 作为默认索引
df.append(row) # 在数据后面追加 并不会修改原df 需要重新赋值
df = df.append(row)
df
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
0 肖申克的救赎 The Shawshank Redemption 9.6 剧情/犯罪 1353097 142.0 1994-09-10(多伦多电影节)/1994-10-14(美国) 12989731.2 弗兰克·德拉邦特
1 这个杀手不太冷 Léon 9.4 剧情/动作/犯罪 1226642 110.0 1994-09-14(法国) 11530434.8 吕克·贝松
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.0 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯
3 盗梦空间 Inception 9.3 剧情/科幻/悬疑/冒险 1065943 148.0 2010-09-01(中国大陆)/2010-07-16(美国) 9913269.9 克里斯托弗·诺兰
4 霸王别姬 9.6 剧情/爱情/同性 993975 171.0 1993-01-01(香港) 9542160.0 陈凯歌
... ... ... ... ... ... ... ... ...
996 逃学威龙2 逃學威龍2 7.4 喜剧 95760 97.0 1992-04-09(香港) 708624.0 陈嘉上
997 小鬼当家2 Home Alone 2: Lost in New York 7.8 喜剧 90819 120.0 1992-11-20(美国) 708388.2 克里斯·哥伦布
998 全民情敌 Hitch 7.5 喜剧/爱情 94268 118.0 2005-02-11(美国) 707010.0 安迪·坦纳特
999 被偷走的那五年 5.9 爱情 119766 111.0 2013-08-29(中国大陆) 706619.4 黄真真
1000 熊大 7.8 科幻 12345 NaN 2019-01-01(中国) 123843.0 熊二

1001 rows × 8 columns

# 删除行
df = df.drop(1000)
df.iloc[-5:] # 使用loc不能进行负索引切片
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
995 摆渡人 4.0 喜剧/爱情 177208 128.0 2016-12-23(中国大陆) 708832.0 张嘉佳
996 逃学威龙2 逃學威龍2 7.4 喜剧 95760 97.0 1992-04-09(香港) 708624.0 陈嘉上
997 小鬼当家2 Home Alone 2: Lost in New York 7.8 喜剧 90819 120.0 1992-11-20(美国) 708388.2 克里斯·哥伦布
998 全民情敌 Hitch 7.5 喜剧/爱情 94268 118.0 2005-02-11(美国) 707010.0 安迪·坦纳特
999 被偷走的那五年 5.9 爱情 119766 111.0 2013-08-29(中国大陆) 706619.4 黄真真
# 列的操作
df['总分'][:5]
0    12989731.2
1    11530434.8
2     9961274.0
3     9913269.9
4     9542160.0
Name: 总分, dtype: float64
#增加一个列
df['序号']=range(1, len(df)+1)
df[:10]
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演 序号
0 肖申克的救赎 The Shawshank Redemption 9.6 剧情/犯罪 1353097 142.0 1994-09-10(多伦多电影节)/1994-10-14(美国) 12989731.2 弗兰克·德拉邦特 1
1 这个杀手不太冷 Léon 9.4 剧情/动作/犯罪 1226642 110.0 1994-09-14(法国) 11530434.8 吕克·贝松 2
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.0 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯 3
3 盗梦空间 Inception 9.3 剧情/科幻/悬疑/冒险 1065943 148.0 2010-09-01(中国大陆)/2010-07-16(美国) 9913269.9 克里斯托弗·诺兰 4
4 霸王别姬 9.6 剧情/爱情/同性 993975 171.0 1993-01-01(香港) 9542160.0 陈凯歌 5
5 泰坦尼克号 Titanic 9.3 剧情/爱情/灾难 999308 194.0 1998-04-03(中国大陆)/1997-11-01(东京电影节)/1997-12-19(美国) 9293564.4 詹姆斯·卡梅隆 6
6 我不是药神 9.0 剧情/喜剧 1028147 117.0 2018-07-05(中国大陆)/2018-06-30(大规模点映) 9253323.0 文牧野 7
7 千与千寻 千と千尋の神隠し 9.3 剧情/动画/奇幻 989858 125.0 2001-07-20(日本) 9205679.4 宫崎骏 8
8 三傻大闹宝莱坞 3 Idiots 9.2 剧情/喜剧/爱情/歌舞 959379 171.0 2011-12-08(中国大陆)/2009-12-25(印度) 8826286.8 拉吉库马尔·希拉尼 9
9 流浪地球 7.9 科幻/灾难 1058032 125.0 2019-02-05(中国大陆) 8358452.8 郭帆 10
df = df.drop('序号', axis=1) # 删除列 必须指定列参数 axis=1 
df[:5]
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
0 肖申克的救赎 The Shawshank Redemption 9.6 剧情/犯罪 1353097 142.0 1994-09-10(多伦多电影节)/1994-10-14(美国) 12989731.2 弗兰克·德拉邦特
1 这个杀手不太冷 Léon 9.4 剧情/动作/犯罪 1226642 110.0 1994-09-14(法国) 11530434.8 吕克·贝松
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.0 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯
3 盗梦空间 Inception 9.3 剧情/科幻/悬疑/冒险 1065943 148.0 2010-09-01(中国大陆)/2010-07-16(美国) 9913269.9 克里斯托弗·诺兰
4 霸王别姬 9.6 剧情/爱情/同性 993975 171.0 1993-01-01(香港) 9542160.0 陈凯歌
df.columns
Index(['电影名称', '评分', '类型', '评价人数', '片长', '上映日期', '总分', '导演'], dtype='object')

条件选择检索

df['评分']>9 # 返回的是一个bool型的Series
0       True
1       True
2       True
3       True
4       True
       ...  
995    False
996    False
997    False
998    False
999    False
Name: 评分, Length: 1000, dtype: bool
df[df['评分']>9.3]
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
0 肖申克的救赎 The Shawshank Redemption 9.6 剧情/犯罪 1353097 142.0 1994-09-10(多伦多电影节)/1994-10-14(美国) 12989731.2 弗兰克·德拉邦特
1 这个杀手不太冷 Léon 9.4 剧情/动作/犯罪 1226642 110.0 1994-09-14(法国) 11530434.8 吕克·贝松
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.0 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯
4 霸王别姬 9.6 剧情/爱情/同性 993975 171.0 1993-01-01(香港) 9542160.0 陈凯歌
28 美丽人生 La vita è bella 9.5 剧情/喜剧/爱情/战争 619758 116.0 1997-12-20(意大利) 5887701.0 罗伯托·贝尼尼
34 辛德勒的名单 Schindler's List 9.5 剧情/历史/战争 549988 195.0 1993-11-30(华盛顿首映)/1994-02-04(美国) 5224886.0 史蒂文·斯皮尔伯格
410 控方证人 Witness for the Prosecution 9.6 剧情/悬疑/犯罪 167791 116.0 1957-12-17(美国) 1610793.6 比利·怀德
# 多条件检索
df[((df['类型']=='剧情/犯罪')|(df['类型']=='剧情/爱情')) & (df['评分']>9.0)] # 必须使用&,| 不能用and,or 
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
0 肖申克的救赎 The Shawshank Redemption 9.6 剧情/犯罪 1353097 142.0 1994-09-10(多伦多电影节)/1994-10-14(美国) 12989731.2 弗兰克·德拉邦特
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.0 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯
48 教父 The Godfather 9.2 剧情/犯罪 484682 175.0 1972-03-15(纽约首映)/1972-03-24(美国) 4459074.4 弗朗西斯·福特·科波拉
98 天堂电影院 Nuovo Cinema Paradiso 9.2 剧情/爱情 389047 155.0 1988-11-17(意大利) 3579232.4 朱塞佩·托纳多雷
225 教父2 The Godfather: Part Ⅱ 9.1 剧情/犯罪 262420 202.0 1974-12-12(纽约首映)/1974-12-20(美国) 2388022.0 弗朗西斯·福特·科波拉
284 美国往事 Once Upon a Time in America 9.1 剧情/犯罪 228478 229.0 1984-02-17(波士顿首映)/1984-09-28(意大利) 2079149.8 赛尔乔·莱昂内

空值处理

df.isnull()[:5]
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
0 False False False False False False False False
1 False False False False False False False False
2 False False False False False False False False
3 False False False False False False False False
4 False False False False False False False False
df['电影名称'].isnull()[:10]
0    False
1    False
2    False
3    False
4    False
5    False
6    False
7    False
8    False
9    False
Name: 电影名称, dtype: bool
df[df['片长'].isnull()] #所有电影的名称都存在
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演

缺失填充 fillna

row['片长']=np.nan # 添加一个空数据
df = df.append(row)
df.tail()
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
996 逃学威龙2 逃學威龍2 7.4 喜剧 95760 97.0 1992-04-09(香港) 708624.0 陈嘉上
997 小鬼当家2 Home Alone 2: Lost in New York 7.8 喜剧 90819 120.0 1992-11-20(美国) 708388.2 克里斯·哥伦布
998 全民情敌 Hitch 7.5 喜剧/爱情 94268 118.0 2005-02-11(美国) 707010.0 安迪·坦纳特
999 被偷走的那五年 5.9 爱情 119766 111.0 2013-08-29(中国大陆) 706619.4 黄真真
1000 熊大 7.8 科幻 12345 NaN 2019-01-01(中国) 123843.0 熊二
df[df['片长'].isnull()]
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
1000 熊大 7.8 科幻 12345 NaN 2019-01-01(中国) 123843.0 熊二
df['片长'].fillna(np.mean(df['片长']), inplace=True) # 用片长的均值填充 inplace=True 表示覆盖原来的df
df.tail()
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
996 逃学威龙2 逃學威龍2 7.4 喜剧 95760 97.000 1992-04-09(香港) 708624.0 陈嘉上
997 小鬼当家2 Home Alone 2: Lost in New York 7.8 喜剧 90819 120.000 1992-11-20(美国) 708388.2 克里斯·哥伦布
998 全民情敌 Hitch 7.5 喜剧/爱情 94268 118.000 2005-02-11(美国) 707010.0 安迪·坦纳特
999 被偷走的那五年 5.9 爱情 119766 111.000 2013-08-29(中国大陆) 706619.4 黄真真
1000 熊大 7.8 科幻 12345 117.741 2019-01-01(中国) 123843.0 熊二
#### 缺失值删除
# df.dropna(how='all', inplace=True, axis=0)
# how='all'--> 删除全为空的行或列, inplace=True-->是否覆盖原数据, axis=0 -->指定行列

异常值处理

# 例如年龄为负 年龄1000等  
df[df['片长']<0]
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
df.dtypes
电影名称     object
评分      float64
类型       object
评价人数     object
片长      float64
上映日期     object
总分      float64
导演       object
dtype: object
df[df['总分']%1==0]
# 对于异常值我们大多采取删除 df = df[df['']条件] 即可
电影名称 评分 类型 评价人数 片长 上映日期 总分 导演
2 阿甘正传 Forrest Gump 9.4 剧情/爱情 1059710 142.000 1994-06-23(洛杉矶首映)/1994-07-06(美国) 9961274.0 罗伯特·泽米吉斯
4 霸王别姬 9.6 剧情/爱情/同性 993975 171.000 1993-01-01(香港) 9542160.0 陈凯歌
6 我不是药神 9.0 剧情/喜剧 1028147 117.000 2018-07-05(中国大陆)/2018-06-30(大规模点映) 9253323.0 文牧野
10 怦然心动 Flipped 9.0 剧情/喜剧/爱情 852841 90.000 2010-07-26(好莱坞首映)/2010-09-10(美国) 7675569.0 罗伯·莱纳
13 海上钢琴师 La leggenda del pianista sull'oceano 9.2 剧情/音乐 787260 165.000 1998-10-28(意大利) 7242792.0 朱塞佩·托纳多雷
... ... ... ... ... ... ... ... ...
994 一个都不能少 7.5 剧情/喜剧 94682 106.000 1999-09-07(威尼斯电影节) 710115.0 张艺谋
995 摆渡人 4.0 喜剧/爱情 177208 128.000 2016-12-23(中国大陆) 708832.0 张嘉佳
996 逃学威龙2 逃學威龍2 7.4 喜剧 95760 97.000 1992-04-09(香港) 708624.0 陈嘉上
998 全民情敌 Hitch 7.5 喜剧/爱情 94268 118.000 2005-02-11(美国) 707010.0 安迪·坦纳特
1000 熊大 7.8 科幻 12345 117.741 2019-01-01(中国) 123843.0 熊二

247 rows × 8 columns

# 数据处理完成后存储
# df.to_excel(path+name) to_csv()等

你可能感兴趣的:(机器学习)