Python数据分析常用方法手册

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. Python数据处理和分析常用语句

数据分析的一般步骤包括数据获取、数据整理、数据描述、数据分析

1.1 数据获取

1.1.1 数据获取方式

1.1.2 查看数据属性

Data.shape 查看数据多少行、多少列

Data.columns 查看数据列

Data.dtypes 查看各数据字段的属性

1.2 数据整理

#第二步:做一些数据的基本处理:

1.2.1 数据基本处理(类excel)

#0.数据类型的转换

例如:如果要做时间序列分析,首先要将交易日期从通用对象(object)转换为日期对象(datetime)

df['date'] = pd.to_datetime(df['date'])

#1.如何获取导入的数据有几行几列?

直接用df.shape,返回一个维度(几行,几列)的元组;

df.columns.size #获取列数

df.iloc[:, 0].size #获取行数

#2.如何查看指定行、列、子集?

#df = pandas.read_excel('1.xls',sheetname= '店铺分析日报')

df = df.loc[:,['股票代码','股票名称', '营业总收入']]#访问指定的列

#df=df['股票代码'] #查看指定列

#DataFrame.ix['index_name'] #查看指定行

#dataframe[m:n] #选择多行

#dataframe[dataframe['col3'>5]] #条件筛选

#dataframe.ix[0:3,0:5] #选择子集

#3.如何添加新的列

例1:添加一个总和栏来显示Jan、Feb和Mar三个月的销售总额

df['total'] = df['Jan']+df['Feb']+df['Mar']

例2:把计算结果添加为一个新的列

df['P/E'] = df.收盘价/df.基本每股收益#新的列名,后面是对应的数值

例3:在excel表最后加一行求各列和

sum_row=df[['Jan','Feb','Mar','total']].sum()

#4.如何删除行列

#df_delete=df.drop(['result'],axis=1) #删除列

#DataFrame.drop(['index1','index2'...]) #删除行

#5.如何对数据进行排序?

df['P/E'].size #获取‘P/E’这列共有多少行

newdf=df_delete.sort('P/E') #默认升序排列

sort_index也可以进行排序

#6.如何对数据进行筛选?

#1.筛选出predictaqi_norm1这一列大于100的行;

aqicsv[aqicsv["predictaqi_norm1"]>100]

也可以写为:data[data.收盘价>100]

#2.使用&(并)与| (或)实现多条件筛选

aqicsv[(aqicsv["FID"]>37898) & (aqicsv["FID"]<38766) ]

aqicsv[(aqicsv.predictaqi_norm1>150) |(aqicsv.predictaqi_norm1<100) ]

#3.筛选后取另外两列数据

如果只需要其中两列数据,而同时利用另外两列进行筛选时可以这样.如果只需要其中的某几列可以写为aqicsv[['FID','x','y']]

aqicsv[['x','y']][(aqicsv.FID >10000) | (aqicsv.predictaqi_norm1 >150)]

#4.isin()用法:筛选某一列数据符合等于规定值

(它使得我们可以定义一个列表,里面包含我们所希望查找的值);

data7=data[data['股票代码'].isin(['sh600141','sh600754','sh603017','sh603198'])]

#同样,以上这个语句可以用query()函数来查询,需要安装numexpr;

data8=data.query('股票代码== ['sh600141','sh600754','sh603017','sh603198']')

#map()函数也有这个功能,样式如下:

df[df["sku"].map(lambda x: x.startswith('B1')) & (df["quantity"] > 22)].head()

#5.字符串方法:筛选某一列内容包含特定值

例如找出MA金叉死叉列所有含金叉的行,但列不能含空值

data8=data7[data7['MA金叉死叉'].str.contains('金叉')]

#6.如果列中存在空值,空值处理方法:

#6.1 用fillna()方法将空值填充

data7=data.fillna(value='你好')

#6.2 或者将列中的空值删除;

stock_data = stock_data[stock_data['市盈率TTM'].notnull()]

#或6.2 用dropna删除缺失值

stock_data.dropna(subset=['下个月涨跌幅'], inplace=True)

#7.pandas能够理解日期,在对日期数据筛选方面可以对某年、某月进行筛选;

data[data['交易日期']='2014-03']

data[data['交易日期']='2015']

data[(data['交易日期'] >='20140701') & (data['交易日期'] <= '20140715')].head()

#8.对时间序列数据,设置交易日期为新的索引

df2 = data.set_index(['交易日期'])

#通过切分来获得一段区间

df2["20140101":"20140201"]

df2['2014']

df2['2014-Dec']

相关文档
最新文档