在数据挖掘前一个数据分析、筛选、清理的多功能工具
import pandas as pd
from pylab import mpl
import matplotlib.pyplot as plt
from matplotlib import font_manager
#将excel读取并转换为pandas的DataFrame
#pd.read_csv读取CSV文件
df_scroe=pd.read_excel('score.xlsx')
#创建一个默认索引从0开始的Series
s=pd.Series([1,2,3,4,5,6])
#创建一个自定义索引的数组,索引由index指定,和前面数组依次对应
s = pd.Series([1,2,3,4,5,6],index=['a','b','c','d','e','f'])
#使用字典创建一个DataFrame,字典的Key会自动成为索引,一个Key默认对应一列数据
df1 = pd.DataFrame({'math':[1,2,3,4,5],'physic':[5,6,7,8,9]})
#提取头两行,参数指定从开始读取多少行
df1.head(2)
#提取结尾数据,参数指定从结尾开始多少行
df1.tail(2)
#生成从20180101开始的时间序列,默认增加单位是天
dates = pd.date_range('20180101',periods=10)
#创建使用时间索引的Series
s_date= pd.Series(range(10), index=dates)
#取出从2018-01-01到2018-01-06的行数据
s_date['2018-01-01':'2018-01-06']
df_imdb = pd.read_csv('IMDB.csv')
#选出一列
df_imdb.Title #相当于df_imdb['Title']
#获取最高票房
df_imdb['Revenue (Millions)'].max()
df_imdb['Revenue (Millions)'].sum()
df_imdb['Revenue (Millions)'].idxmax()#返回最大值的索引
#将DataFrame第50行数据的Director列取出,[]去1:6的数据的时候不会把6取出来
df_imdb[50:51]['Director']
#第一个纬度是行,第二维度是列,将50到56行(包含50行和56行自身)的导演和年份取出
df_imdb.loc[50:56,['Director','Year']]
#将1到10行(不包含第10行),及2到3列(不包含第3列)取出,使用整数索引操作
df_imdb.iloc[1:10,2:3]
#统计Director列中不同导演出现的次数
df_imdb['Director'].value_counts()
#将票房大于5亿美元的电影选出来,支持> < ==
df_imdb[df_imdb['Revenue (Millions)'] > 500]
#将电影风格描述中含有Sci-Fi(科幻)关键字的找出,str将待处理列转换为字符串
df_imdb[df_imdb['Genre'].str.contains('Sci-Fi')]
#将缺失数据(NaN)填充为0,也可以自己根据项目需求指定其他数据
df_score.fillna(0)
#将缺失数据的行移除(默认操作,可以使用axis=1指定删除列df_score.dropna(axis=1),0:按行,1:按列)
df_score.dropna()
#在DataFrame增加一列avg(平均值),计算当前DataFrame中每一行的平均值作为avg的数据,前后赋值数据的
#行数要对应,axis=1表示按照行计算平均值,axis=0(默认值),表示按列计算
df_score['avg'] = df_score.mean(axis=1)
#选出音乐、性别字段,按照性别分组,进一步计算各个分组的总和
df_score.loc[:,[u'音乐',u'性别']].groupby(u'性别').sum()
#将数学成绩大于80和化学成绩大于60的同学选出
df_score[(df_score[u'数学'] > 80) & (df_score[u'化学'] > 60)]