1、读取数据
import pandas
JL_data=pandas.read_excel(io='路径/数据源.xlsx')
data=pandas.DataFrame(JL_data)
2、编写数据
1)行列
data=pd.DataFrame(
np.random.randint(low=0,high=6,size=(5,5)),
columns=['列1','列2'],
index=['行1','行2']
)
2)列
data=pd.DataFrame({'key1':list('aabba'),
'key2': ['one','two','one','two','one'],
'data1': np.random.randn(5),
'data2': np.random.randn(5)})
1、单列:data["lng"]
2、多列:
xl = data.iloc[:, 1:] # 选取DataFrame的所有行,并截取第二列至最末列。
df = data.iloc[1:] # 选取DataFrame的第二行至最末行,保留所有列,并将选取的数据表保存在一个新的变量中。
3、单个值:
data["lng"][0]==data.loc[0,"lng"]
三、特征构建基于已有的数据进行特征构建
1、计算:两列之间的加减乘除
data['new']= 加+ 减- 乘* 除/ 余数% 商// 幂**
2、定义指标
1)某个关键词作为指标
import re
j=0
for j in range(0,len(data['字段1'])):
data['new'][j] = str(re.findall(r'关键词',data['字段1'][j])).replace('[','').replace("'",'')
j+=1
data['new']
2) 特定符号之后的内容作为指标
(?<=特殊符号).*$
3)某个段作为指标
data['new'] = ''
data.loc[data['字段1'] - data['字段2'] > 0, 'new'] = '类1'
data.loc[data['字段1'] - data['字段2'] <= 0, 'new'] = '类2'
data['new'].value_counts()
data['new']
灵活性高,可以随意定制你的分析计算要求
脉络清晰易于理解数据
操作性强,报表神器
1、pivot_table简介
pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
pivot_table有四个最重要的参数index、values、columns、aggfunc,本文以这四个参数为中心讲解pivot操作是如何进行。
1)Index:Index就是层次字段,就是excel透视表的行,可以多行,形成多个维度
pd.pivot_table(data,index=['字段1']) ,pd.pivot_table(data,index=['字段1','字段2'])
2)Columns类似Index可以设置列层次字段,它不是一个必要参数,作为一种分割数据的可选方式。
pd.pivot_table(df,index=['字段1'],columns=['字段2'])
3) Values:在index字段维度下统计的指标,只能为数值的字段
pd.pivot_table(data,index=['字段1','字段2']],values=['指标1','指标2','指标3'])
4)Aggfunc参数可以设置我们对数据聚合时进行的函数操作。
当我们未设置aggfunc时,它默认aggfunc='mean'计算均值:
pd.pivot_table(df,index=['字段1','字段2']],values=['指标1','指标2','指标3'],aggfunc=[np.sum,np.mean])
还有其他:min、sum、max、count、mean、median等
5)fill_value默认填充空值,可fill_value=0,margins=Truemargins=1进行汇总
6)类型
aggfunc也可以使用dict类型,如果dict中的内容与values不匹配时,以dict中为准。
Pandas中把dataframe转成array:df=df.values
2、groupby
1)聚合
data.groupby('字段'),data.groupby(['字段1'],['字段2'])
汇总值:data.groupby(['字段1'],['字段2'])['指标1'].transform('sum')
data=groupby(['字段1'],['字段2'])['指标1','指标2'].sum().sort_values(['字段1'],['字段2']],ascending=False).reset_index()
2)分组,通过字典分组
mapping = {'字段1':'类1','字段2':'类1','字段3':'类2'}
data = people.groupby(mapping,axis=1).mean()
五、数据保存将处理结果保存到excel中
data.to_excel(r'路径/数据结构.xlsx')



