pandas常用功能
一、表格操作
1、创建/转换为表格:
空表
df=pd.DataFrame()
指定列名
df=pd.DataFrame(columns=['A','B'])
指定列名和该列数据:
df = pd.DataFrame({
"weekday": df_dt.dt.weekday/6.0,
"timeindex": (df_dt.dt.hour * 60 + df_dt.dt.minute)/(24*60.0),
"number": raw_data["number"].astype(int)})
2、删除列:
del df['time_x']
df.drop(['industry_id'],axis=1)
3、添加/修改列:
df['time_idx']=df['time'].dt.hour * 60
4、修改列名:
指定修改:
df.rename(columns={'time_y':'time'},inplace=True)
全部修改:
dataall.columns=['time','cross','direction','lf','sf']
5、读取/写入:
读取csv:
df=pd.read_csv('jiaotong.csv')
默认header表头为第一行,encoding编码方式为utf-8,sep分隔符为‘,’
读取xls:
dftmp=pd.read_excel()
写入csv:
dataall.to_csv('jiaotong_all2019.01-02.csv', index=False,header=True,encoding='utf-8')
6。查看表格基本信息:
头尾数据:
df.head(10)
df.tail(10)
每列缺失信息,数据类型查看:
df.info()
统计信息:
df.describe()
df['列名'].describe()
表格数据量:
dataall.shape
表格某列(类别)取值范围:
df['列名'].unique().values
#不同的取值
df['ad_id'].value_counts()
查看表格列名:
dataall_goodcopy.columns
dataall_goodcopy.columns.vaules
7、表格聚合groupby:
按照某些列,相同取值聚合,计算其余列的sum,mean,median等数据
dataall.groupby(['日期','路口'])['车速|车流'].sum()
处理前
处理后
聚合表格后生成新表:
expnum = pd.DataFrame(expnum.groupby(['ad_id'])["expnum"].mean())
expnum.reset_index(inplace=True)
df1.rename(columns={'c':'D'},inplace=True)
expnum.head()
8、重置行索引reset_index():
参数:inplace=True
9、表格某列取值->列名:pivot
mydataall.pivot(index='time', columns='cross_name', values='allFlow').reset_index()
把time取值相同的聚合为一行,crossname不同的单独为列,取值为allflow
转换后:
9、表格列名->某列取值:melt(pivot逆操作)
删除del dataall[‘cross’],del dataall[‘direction’]后
dataall=dataall.melt(id_vars=['time','cross-direction'], var_name='myVariable', value_name='flow').sort_values('time')
10、两个表格连接操作
内连接
dataall_goodcopy=pd.merge(dataall_goodcopy, dataother, on=['date','time_idx'],
外连接
11、两个表格连接操作
submit_data = pd.concat([df1,df2], axis=1)
12、表格每行apply操作
how="right")dataall_goodcopy['dayafterwork']=dataall_goodcopy['dayofyear'].apply(lambda t: t-41 if (t-41)>0 else -999)
13、定位单元格、行操作
根据列取值:
train.loc[train[‘happiness’] != -8]
根据列名和行index:
df1.loc[行数,‘列名’] =10
根据列索引和行索引:
df1.iloc[2,1] =10