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