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

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