手頭現(xiàn)在有一份福布斯2016年全球上市企業(yè)2000強排行榜的數(shù)據(jù),但原始數(shù)據(jù)并不規(guī)范,需要處理后才能進一步使用。
本文通過實例操作來介紹用pandas進行數(shù)據(jù)整理。
照例先說下我的運行環(huán)境,如下:
windows 7, 64位
python 3.5
pandas 0.19.2版本
在拿到原始數(shù)據(jù)后,我們先來看看數(shù)據(jù)的情況,并思考下我們需要什么樣的數(shù)據(jù)結(jié)果。
下面是原始數(shù)據(jù):
在本文中,我們需要以下的初步結(jié)果,以供以后繼續(xù)使用。
可以看到,原始數(shù)據(jù)中,跟企業(yè)相關(guān)的數(shù)據(jù)中(“Sales”,“Profits”,“Assets”,“Market_value”),目前都是不是可以用來計算的數(shù)字類型。
原始內(nèi)容中包含貨幣符號”$“,“-”,純字母組成的字符串以及其他一些我們認為異常的信息。更重要的是,這些數(shù)據(jù)的單位并不一致。分別有以“B”(Billion,十億)和“M”(Million,百萬)表示的。在后續(xù)計算之前需要進行單位統(tǒng)一。
1 處理方法 Method-1
首先想到的處理思路就是將數(shù)據(jù)信息分別按十億(’B’)和百萬(‘M’)進行拆分,分別進行處理,最后在合并到一起。過程如下所示。
加載數(shù)據(jù),并添加列的名稱
import pandas as pd df_2016 = pd.read_csv('data_2016.csv', encoding='gbk',header=None)# 更新列名df_2016.columns = ['Year', 'Rank', 'Company_cn','Company_en', 'Country_en', 'Sales', 'Profits', 'Assets', 'Market_value'] print('the shape of DataFrame: ', df_2016.shape) print(df_2016.dtypes) df_2016.head(3)