import pandas as pd
import numpy as np
Pandas读取数据及数据操作
以豆瓣电影数据作为示例:【点击下载】
df = pd.read_excel("豆瓣电影数据.xlsx")
df.head()
Out[]:
Unnamed: 0 名字 投票人数 类型 产地 上映时间 时长 年代 评分 首映地点
0 0 肖申克的救赎 692795.0 剧情/犯罪 美国 1994-09-10 00:00:00 142 1994 9.6 多伦多电影节
1 1 控方证人 42995.0 剧情/悬疑/犯罪 美国 1957-12-17 00:00:00 116 1957 9.5 美国
2 2 美丽人生 327855.0 剧情/喜剧/爱情 意大利 1997-12-20 00:00:00 116 1997 9.5 意大利
3 3 阿甘正传 580897.0 剧情/爱情 美国 1994-06-23 00:00:00 142 1994 9.4 洛杉矶首映
4 4 霸王别姬 478523.0 剧情/爱情/同性 中国大陆 1993-01-01 00:00:00 171 1993 9.4 香港
一、行操作
1、查看
df.iloc[0]
df.iloc[:5] # 左闭右开
df.loc[:3] # 左闭右闭
2、添加一行
A.append(l)
dit={'名字':'红富卫士','投票人数':'666666','类型':'科幻/魔幻','上映时间':'2077-07-07 00:00:00','产地':'中国','时长':'666','年代':2077,'评分':'10.0','首映地点':'中国'}
s=pd.Series(dit)
s.name=38738
df=df.append(s)
3、删除一行
A.drop([索引])
df = df.drop([38738])
二、列操作
1、查看列
df['名字']
df[['名字','上映时间',''类型]]
2、增加一列
直接赋值即可
df['序号']=range(1,len(df)+1)
3、删除一列
axis = 0
:删行
axis = 1
:删列
df=df.drop('序号',axis=1)
三、选择数据
1、通过标签选择
df.loc[[index],[co]]
# 一行一列
df.loc[1,'名字']
# 多行多列
df.loc[[1,2,3,4,5],['名字','评分']]
2、按条件选择
- 选取产地为美国的所有电影
df['产地']=='美国'
Out[]:
0 True
1 True
2 False
3 True
4 False
...
38734 True
38735 False
38736 False
38737 False
38738 False
Name: 产地, Length: 38739, dtype: bool
df[df['产地']=='美国'] # 这样就能取出来,上面是举例
- 产地为美国,且评分大于九
df[(df.产地=='美国') & ((df.评分).astype(float)>9)]
- 产地为美国或中国大陆的所有电影,且评分大于9分
df[((df.产地=='美国') | (df.产地=='中国大陆')) & (df.评分.astype(float)>9)]
四、缺失值和异常处理
1、缺失值处理方法
dropna
:删除缺失值fillna
:填充缺失值isnull
:判断缺失值notnull
:isnull的否定式
2、判断缺失值
df[df.名字.isnull()]
3、填充缺失值并保存
df[np.mean(df.评分),inplace=True]
4、异常处理
df=df[df.投票人数>0]
df=df[df.投票人数%1==0]
结尾:Pandas数据保存
df.to_excel("movie.xlsx",engine='xlsxwriter')