#Pandas/Python Data Analysis Library
#导入
import pandas as pd
import numpy as np
#基本数据结构
#一维数组 Series 类似array/list 与array差别: 能保存不同类型的数据 左闭右闭的区间
a=pd.Series([1,2,3,np.nan],index=[\'a\',\'b\',\'c\',\'d\']) #自定义索引类型
a
#查看索引
a.index # 输出Index([\'a\', \'b\', \'c\', \'d\'], dtype=\'object\')
#查看值
a.values # array([ 1., 2., 3., nan])
a[3]
#切片
a[::2]
#索引列命名
a=pd.Series([1,2,3,np.nan])
a.index.name=\'索引\'
#后续索引赋值
a.index=list(\'abcd\') #索引与数据项的个数一致
#左闭右闭
a[\'a\':\'c\']
#-------------------------------------------
#二维 dataframe数据表
date=pd.date_range(\'20180101\',periods=6)
#索引行index 索引列columns
df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list(\'abcd\'))
df.index.name=\'日期\'
df
#字典传入数据 key作为索引
df2=pd.DataFrame({\'A\':1,\'B\':pd.Timestamp(\'20181001\'),\'C\':pd.Series(1,index=list(range(4)),dtype=float),\'D\':np.array([3]*4,dtype=int),\'E\':pd.Categorical(["test","train","test","train"]),\'F\':\'abcd\'})
df2
#查看遍历数据
#行查看
df2.head()#默认为5
df2.tail(3)#最后3行#默认为5
#下标 列标 数据
df.index
df.columns
df.values
#数据读取与操作
df=pd.read_excel(\'豆瓣电影数据.xlsx\')
df.head()
#行操作
df.iloc[0]
df.iloc[0:5]#左闭右开
df.loc[0:5]#左闭右闭
dit={\'名字\':\'复仇者联盟3\',\'投片人数\':123456,\'类型\':\'剧情/科幻\',\'产地\':\'美国\',\'上映时间\':\'2018-05-4 00:00:00\',\'时长\':142,\'年代\':2018,\'评分\':9.9}
s=pd.Series(dit)
s.name=38738
s
df=df.append(s) #传入一行属性一定要对齐
df=df.drop([38738])#选定某行的index值
df[-5:]
#列操作
df.columns
df[[\'名字\',\'类型\']][:5] #list的对象
#增加列
df[\'序号\']=range(1,len(df)+1) #range(a,b) 左闭右开
df[:5]
#删除列
df=df.drop(\'序号\',axis=1) #维度/轴 行默认为0 列为1
df[:5]
#--------------------------------------
#通过标签选择数据 df.loc[[index],[column]]
df.loc[1,\'名字\'] #[行,列]
df.loc[[1,3,5,7,9],[\'名字\',\'评分\']]
#条件选择
df[df[\'产地\']==\'美国\'][:5] #产地为美国的电影
df[(df[\'产地\']==\'美国\')&(df[\'评分\']>9)] #产地为美国且评分大于9
df[(df.产地==\'美国\')&(df.评分>9)][:5]
df[((df.产地==\'美国\')|(df.产地==\'中国大陆\'))&(df.评分>9)]
#缺失值 异常值处理 数据清洗
#缺失值 删 填 判断
df[df[\'名字\'].notnull()]
#填充
df[df[\'投片人数\'].isnull()][:10]
df[\'投片人数\'].fillna(np.mean(df[\'投票人数\']),inplace=True)
df[df[\'投片人数\'].isnull()]
#删除
# df.dropna()
#how=\'all\' 删除全为空值的行或列
#inplace=True 覆盖
#axis=0 选择行或列
print(len(df))
df2=df.dropna()
print(len(df2))
df3=df
df3.dropna(inplace=True)
print(len(df3))
#处理异常值/离群点 删除/格式转换
df=df[df.投票人数<0]
df=df[df.投票人数%1!=0]
#数据保存
df.to_excel(\'movie_data.xlsx\')
运行截图