《数据挖掘与分析.pptx》由会员分享,可在线阅读,更多相关《数据挖掘与分析.pptx(35页珍藏版)》请在优知文库上搜索。
1、Python 数据挖掘与分析数据收集数据整理数据描述数据分析数据获取和收集从数据源获取:From Excelimport pandas as pdimport numpy as npdata1=pd.read_excel(”filename.xlsx)#使用pandas读取excelFrom CSV#ocding:utf-8import numpy as npimport pandas as pddf00=pd.read_csv(20161009.csv,delimiter=;)From 网页: urllib urllib2 httplib httplib2 import urllibimpo
2、rt redBytes = urllib.request.urlopen(http:/aaa.bbb.ccc/page).read()dStr = dBytes.decode() #在python3中urllib.read() 语句功能是将dBytes转换成Strm = re.findall(正则解析表达式, dStr) 获取并连接:#coding:utf-8import numpy as npimport pandas as pdprint =lcsv=lcsv.append(pd.read_csv(20161009.csv,delimiter=;,names=date,val,name,c
3、op,acter,directer,type)lcsv.append(pd.read_csv(20161016.csv,delimiter=;,names=date,val,name,cop,acter,directer,type)lcsv.append(pd.read_csv(20161023.csv,delimiter=;,names=date,val,name,cop,acter,directer,type)lcsv.append(pd.read_csv(20161030.csv,delimiter=;,names=date,val,name,cop,acter,directer,typ
4、e)print -nf=pd.concat(lcsv)print nf原理与要点:Concat的参数是一个 “列表”扩展:利用OS,浏览目录,获得 Filename List,利用遍历 Filename List,打开多个文件数据整理例如:整理、去空、去重、合并、选取、数据准备:重要准备:index,header,columnsheader-1header-2header-3header-4index-0index-1index-2index-3index-4index-5index-6index-7显示各要素: 显示索引 显示列名 显示数据的值 显示数据描述数据清洗和整理例如:去空、去重、合
5、并、选取、数据准备:显示各要素: 显示索引 df.index 显示列名 df.columns 显示数据的值 df.values 可以重构一个DataFrame扩展:rdf=pd.DataFrame(data,index=inxlst,columns=colst) 显示数据描述 df.describe ,简报数据清洗和整理去空、处理缺失:isnull(),notnull()#测试空(not null)值,返回True,Falsedropna()#dropna(axis=1,how=all),按列删除 all Na,缺省为axis=0,即按行df.fillna()#填充,inpalce,不产生副本
6、#fillna(0)填充0,fillna(c1:v1,cx:vx)利用字典x列填充v#可以利用函数:mean、random.randon等等数据清洗和整理去重:duplicated()#测试重值,返回True,Falsedrop_duplicates ()#填充,inpalce,不产生副本#可利用列名列表,可以按列删除重复#take_last=True,保留最后一个记录数据整理选择方式: 行选择 列选择 区域选择 筛选(条件选择)数据整理行选择: From Head: df.head(5) df:5 From Tail: df.tail(5) df-5:-1 Select i j:dfi:j+
7、1选取后,也是df扩展:重构一个新的DataFrame数据整理列选择: 单列: df列名 或 df.colname#不支持多列区域选择:1、行号-列名df.loc1:5, # 1-5行 全部列df.loc:,列名x,列名y#所有行的 x,y两列数据整理区域选择:2、行-列,位置df.iloc1:5,x,y #x,y组成整型列表df.iloc:,列x,列y当然可以精确到一个数据df.locr,列名,df.ilocr,c,df.iatr,c条件筛选: df(df.index = u2014-01-01) & (df.val = 95) isin() 数据统计分析求票房收入均值: df.mean(c
8、olumns = amount) 求票房大于3000万的影片名称: df amount3000000.filename 求票房大于3000万的影片数量: len(df amount3000000.filename)小于30000000万的票房影片数?数据统计分析票房前三甲: df.sort(columns = amount)?:?.filmname #ascending =True(default),增序sum(和)、median(中位数)、var(方差)、std(标准差)、mean(平均数)、quantile(分位数)、min(最小)、max(最大)、describe(列数据简报)、coun
9、t(非空计数)、pct_change(百分数变化)数据统计分析票房前三甲: df.sort(columns = amount)?:?.filmname #ascending =True(default),增序sum(和)、median(中位数)、var(方差)、std(标准差)、mean(平均数)、quantile(分位数)、min(最小)、max(最大)、describe(列数据简报)、count(非空计数)、pct_change(百分数变化)数据分组group by 操作的执行顺序(Splitting)按照一些规则将数据分为不同的组;(Applying)对于每组数据分别执行一个函数;(Co
10、mbining)将结果组合到一个数据结构中例如,分组然后求和print(objbox office.groupby(objmovie_name).size()grouped=objbox office.groupby(objmovie_name)grouped=objbox office.groupby(objdate,objmovie_name).sum()grouped=obj.groupby(objdate,objmovie_name).sum()mean=grouped.mean()数据合并MergeMerge的形式 Append 加行到DataFrame同型(列相同)datafram
11、e可添加至尾部 Concat 连接pandas对象 concat参数是列表lcsv=lcsv.append(pd.read_csv(20161009.csv,delimiter=;,names=date,val,name,cop,acter,directer,type)lcsv.append(pd.read_csv(20161016.csv,delimiter=;,names=date,val,name,cop,acter,directer,type)nf=pd.concat(lcsv)数据合并MergeMerge的形式 Join SQL类型的连接 数据合并MergeMerge的形式 Merg
12、e的参数 数据可视化Matplotlib绘图主要用于二维绘图 画图质量高 方便快捷的绘图模块 绘图APIpyplot模块 集成库pylab模块(包含NumPy和 pyplot中的常用函数)数据可视化Matplotlib绘图import numpy as npimport matplotlib.pyplot as pltls_x=0,1,2,3,4,5,6,7ls_y=1,2,11,5,6,8,10,12plt.plot(ls_x,ls_y)plt.show()数据可视化Matplotlib绘图import numpy as npimport matplotlib.pyplot as pltt=
13、np.arange(0.,4.,0.1)plt.plot(t,t,t,t+2,t,t*2)plt.show()数据可视化绘图样式 文字和字体属性 坐标轴和网格属性 子图(axes) 子区(subplots) 色彩和样式 线宽 每英寸点数图像大小pl.figure(figsize=(8,6),dpi=100)数据可视化 import numpy as npimport matplotlib.pyplot as pltls_x=0,1,2,3,4,5,6,7ls_y=1,2,11,5,6,8,10,12plt.plot(ls_x,ls_y)plt.title(picture title)plt.x
14、label(x label)plt.ylabel(y label)plt.show()#plt.plot(ls_x,ls_y,g-)数据可视化 上图的绘制命令:plt.1(list_i,list_o,2)1,2填什么?数据可视化 import matplotlib.pyplot as pltimport numpy as npt=np.arange(0.,4.,0.1) plt.plot(t,t,color=red,linestyle=-,linewidth=3,label=t) plt.plot(t,t+2,color=green,linestyle=:,marker=*,linewidth
15、=3,label=t+2) plt.plot(t,t*2,color=blue,linestyle=,marker=+,linewidth=3,label=t*2) plt.legend(loc=upper left)plt.show()#loc=best数据可视化 import numpy as npimport matplotlib.pyplot as pltls_x=0,1,2,3,4,5,6,7ls_y=1,2,11,5,6,8,10,12plt.plot(ls_x,ls_y) #plt.bar(ls_x,ls_y)plt.title(picture title)plt.xlabel(
16、x label)plt.ylabel(y label)plt.show()数据可视化 子图-subplots(便于比较) 数据可视化 子图-subplots(便于比较) import matplotlib.pyplot as pltimport numpy as np#pl.figure(figsize=(8,6),dpi=100)t=np.arange(0.,4.,0.1) plt.subplot(211)plt.plot(t,t,color=red,linestyle=-,linewidth=3,label=t) plt.subplot(212)plt.plot(t,t+2,color=green,linestyle=:,marker=*,linewidth=3,label=t+2) plt.plot(t,t*2,color=blue,linestyle=,marker=+,linewidth=3,label=t*2) plt.legend(loc=upper left)plt.show()数据可视化 子图-subplots(便于比较) 扩展:用2*2子图的方式绘制:a*X,a*X