《Python数据分析常用方法手册.pdf》由会员分享,可在线阅读,更多相关《Python数据分析常用方法手册.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.Python1.Python 数据处理和分析常用语句数据分析的一般步骤包括数据获取、数据整理、数据描述、数据分析1.1数据获取1.1.11.1.1数据获取方式1.1.21.1.2查看数据属性Data.shape 查看数据多少行、多少列Data.colu mns 查看数据列Data.dtypes查看各数据字段的属性1.2数据整理#第二步:做一些数据的基本处理:1.2.11.2.1数据基本处理(类excelexcel)#0.数据类型的转换例如:如果要做时间序列分析,首先要将交易日期从通用对象(datetime)dfdate=pd.to_datetime(dfdate)#1.如何获取导入的数据有
2、几行几列?直接用 df.shape,返回一个维度(几行,几列)的元组;object)转换为日期对象df.colu mn s.size#获取列数df.iloc:,0.size#获取行数#2.如何查看指定行、列、子集?#df=pandas.read_excel(1.xls,sheetname=店铺分析日报)df=df.loc:,股票代码,股票名称,营业总收入#访问指定的列#df=df股票代码#查看指定列#DataFrame.ixi ndex_ name#dataframem:n#dataframedataframecol35#dataframe.ix0:3,0:5#查看指定行#选择多行#条件筛选#
3、选择子集#3.如何添加新的列例 1:添加一个总和栏来显示Jan、Feb 和 Mar 三个月的销售总额dftotal=dfJa n+dfFeb+dfMa 门例 2:把计算结果添加为一个新的列dfP/E=df.收盘价/df.基本每股收益例 3:在 excel 表最后加一行求各列和sum_row=dfJa n,Feb,Mar,total.sum()#新的列名,后面是对应的数值#4.如何删除行列#df_delete=df.drop(result,axis=1)#删除列#DataFrame.drop(index1,index2.)#删除行#5.如何对数据进行排序?dfP/E.sizen ewdf=df_
4、delete.sort(P/E)sort_index 也可以进行排序#获取P/E 这列共有多少行#默认升序排列#6.如何对数据进行筛选?#1#1筛选出 predictaqi_norm1predictaqi_norm1 这一列大于 100100 的行;aqicsvaqicsvpredictaqi_ no rm1100也可以写为:datadata.收盘价100#2#2使用&(并)与|(或)实现多条件筛选aqicsv(aqicsvFID37898)&(aqicsvFID150)|(aqicsv.predictaqi_ no rm110000)|(aqicsv.predictaqi_ norm1 15
5、0)如果只需要其中的某#4#4i sin()i sin()用法:筛选某一列数据符合等于规定值(它使得我们可以定义一个列表,里面包含我们所希望查找的值);data7=datadata股票代码.isin(sh600141,sh600754,sh603017,sh603198)#同样,以上这个语句可以用query()函数来查询,需要安装numexpr;data8=data.query(股票代码=sh600141,sh600754,sh603017,sh603198)#map()函数也有这个功能,样式如下:dfdfsku.map(lambda x:x.startswith(BI)&(dfqua
6、 ntity>22).head()#5#5 字符串方法:筛选某一列内容包含特定值例如找出 MA 金叉死叉列所有含金叉的行,但列不能含空值data8=data7data7MA 金叉死叉.str.contains(金叉)#6#6如果列中存在空值,空值处理方法:#6.1 用 fillna()方法将空值填充data7=data.fillna(value=你好)#6.2 或者将列中的空值删除;stock_data=stock_datastock_data市盈率 TTM.notnull()#或 6.2 用 dropna 删除缺失值stock_data.dropna(subset=下个月涨跌幅,inp
7、lace=True)#7.pandas#7.pandas 能够理解日期,在对日期数据筛选方面可以对某年、某月进行筛选;datadata交易日期=2014-03datadata交易日期=2015data(data交易日期=20140701)&(data交易日期6.sort(tip,asce ndin g=False)#1.7#1.7 对列 sexsex 分组后,对另一列(tip/total_billtip/total_bill)进行排序def top(self,n):return self.sort(tip/total_bill,asce ndin g=False):n#top(tips)tip
8、s.groupby(sex).apply(top,n=5)#1.8#1.8 按照某一列内容的部分字母进行分组排序比如,某一列由不同星期+日期组成,但只想按照这一列的星期进行排序?#get_day=lambda day:tips.day:1#选择列中的第一个字母,按第一个字母排序#tips.groupby(get_day).apply(top,n=5)#groupby可以调用函数#1.9#1.9 采用多个聚合函数返回多个聚合值tips2=tips1.groupby(sex,smoke门)total_bill,tiptips2.agg(mea n,sum,std,max)#2.0#2.0 计算 t
9、iptip 和 total_billtotal_bill 之间的相关系数#corr=lambda x:x.corrwith(xtips)tips_corr=tips.groupby(sex)tips_corr.apply(lambda g:gtip.corr(gtotal_bill)#2.1#2.1 根据日价格变化计算各股票之间的年度相关系数by_year=data.groupby(lambda x:x.year)corr=lambda x:x.corrwith(xSPX)data_by_year=by_year.apply(corr)2.merge 合并1.Append1.AppendP=2
10、.Concat2.Concat例子 1:使用 concat()函数将两个不同逻辑结构的对象能连接:将股票数据中的前 5 个和后 5 个合并;Data 仁 data:3Data2=df:3Pd.c on cat(Data1,Data2,ig nore_in dex=Ture)例子 2:将两个相同逻辑结构的对象能连接import pan das as pddates=ra nge(20161010,20161020)pieces=for date in dates:path=overview-push-%d/stock overview.csv%date date=pd.read_csv(path
11、,e ncod in g=gbk)pieces.appe nd(date)datas=pd.c on cat(pieces)3.Join3.Join将美国运通公司和可可可乐公司近一年中每个月的交易总量琼斯成分股股票信息表合并;表(包含公司代码)与 30 只道Pd.merge(data1,data2,on=code)3.聚类分析3.1K-3.1K-均值聚类scikit-learn 语言包#K-Mean 聚类的一个小例子from pylab import*from scipy.cluster.vq import*list 仁88,64,96,85Iist2=92,99,95,94Iist3=91,87,99,95Iist4=78,99,97,81Iist5=88,78,98,84 list6=100,95,100,92 data=vstack(list1,list2,list3,list4,list5,list6)centroids,_=kmea ns(data,2)result,_=vq(data,ce ntroids)prin t(result)
限制150内