手頭現(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ù):

iOS培訓,Swift培訓,蘋果開發(fā)培訓,移動開發(fā)培訓

在本文中,我們需要以下的初步結(jié)果,以供以后繼續(xù)使用。

iOS培訓,Swift培訓,蘋果開發(fā)培訓,移動開發(fā)培訓

可以看到,原始數(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)