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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章