1. 程式人生 > >python處理資料

python處理資料

1、遇到的情況

print u'%i行,%i列' %(total_data.shape[0], total_data.shape[1])#total_data.shape[0]行數,total_data.shape[1]列數
LTE_total_data = total_data[total_data[u'客戶網路型別'].isin([u'LTE'])].reset_index()#資料篩選
del LTE_data_service['index']#刪除列名為‘index’的一列資料
LTE_data_service.drop([u'客戶網路型別', u'是否為流量服務投訴', u'流量服務投訴類別'
, u'投訴集團業務名稱', u'校園名稱'],axis=1)#drop方法可以刪除某行(axis=1或者axis=0) df_jingfen.sort_values(by = u'手機號碼')#按照某一列排序 df2 = df_data.groupby(by = u'手機號碼', as_index=False).mean()#只會求數字列的均值

2、pandas消除空值和空格的混淆

在人工採集資料時,經常有可能把空值和空格混在一起,一般也注意不到在本來為空的單元格里加入了空格。這就給做資料處理的人帶來了麻煩,因為空值和空格都是代表的無資料,而pandas中Series的方法notnull()會把有空格的資料也納入進來,這樣就不能完整地得到我們想要的資料了,這裡給出一個簡單的方法處理該問題。

  • 方法一
    既然我們認為空值和空格都代表無資料,那麼可以先得到這兩種情況下的布林陣列。
    這裡,我們的DataFrame型別的資料集為df,其中有一個變數VIN,那麼取得空值和空格的布林陣列為NONE_VIN。然後通過該布林陣列,就能得到我們要的資料了。
NONE_VIN = (df["VIN"].isnull()) | (df["VIN"].apply(lambda x: str(x).isspace()))
df_null = df[NONE_VIN]
df_not_null = df[~NONE_VIN]
  • 方法二
    直接使用Series的.apply方法來修改變數VIN中的每個值。如果發現是空格,就返回Nan,否則就返回原值。
 df["VIN"]=df["VIN"].apply(lambda x: np.NaN if str(x).isspace() else x)
df_null = df[df["VIN"].isnull()]
df_not_null = df[df["VIN"].notnull()]

總結
- 方法一的思路就是直接判定是否為空格,把空格納入到選擇中來。
- 方法二的思路是先把空格轉換為NaN,然後正常使用.isnull()或.notnull()來得到我們想要的資料

3、更改pandas dataframe列的順序

cols = [u'手機號碼', u'流水號', u'年齡', u'性別', 'LAC', 'CI']
df_data = df_data[cols]