您的位置:首页 > 编程语言 > Python开发

python处理数据

2017-03-30 18:05 127 查看

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 数据