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]

参考:
1、如何更改DataFrame列的顺序?
2、更改pandas dataframe 列的顺序

你可能感兴趣的:(python)