国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Pandas數據處理實例展示:全球上市公司數據整理

來源:懂視網 責編:小采 時間:2020-11-27 14:13:53
文檔

Pandas數據處理實例展示:全球上市公司數據整理

Pandas數據處理實例展示:全球上市公司數據整理:手頭現在有一份福布斯2016年全球上市企業2000強排行榜的數據,但原始數據并不規范,需要處理后才能進一步使用。本文通過實例操作來介紹用pandas進行數據整理。照例先說下我的運行環境,如下:windows 7, 64位python 3.5pandas 0.19.2版本在拿到
推薦度:
導讀Pandas數據處理實例展示:全球上市公司數據整理:手頭現在有一份福布斯2016年全球上市企業2000強排行榜的數據,但原始數據并不規范,需要處理后才能進一步使用。本文通過實例操作來介紹用pandas進行數據整理。照例先說下我的運行環境,如下:windows 7, 64位python 3.5pandas 0.19.2版本在拿到

手頭現在有一份福布斯2016年全球上市企業2000強排行榜的數據,但原始數據并不規范,需要處理后才能進一步使用。

本文通過實例操作來介紹用pandas進行數據整理。

照例先說下我的運行環境,如下:

  • windows 7, 64位

  • python 3.5

  • pandas 0.19.2版本

  • 在拿到原始數據后,我們先來看看數據的情況,并思考下我們需要什么樣的數據結果。

    下面是原始數據:

    在本文中,我們需要以下的初步結果,以供以后繼續使用。

    可以看到,原始數據中,跟企業相關的數據中(“Sales”,“Profits”,“Assets”,“Market_value”),目前都是不是可以用來計算的數字類型。

    原始內容中包含貨幣符號”$“,“-”,純字母組成的字符串以及其他一些我們認為異常的信息。更重要的是,這些數據的單位并不一致。分別有以“B”(Billion,十億)和“M”(Million,百萬)表示的。在后續計算之前需要進行單位統一。

    1 處理方法 Method-1

    首先想到的處理思路就是將數據信息分別按十億(’B’)和百萬(‘M’)進行拆分,分別進行處理,最后在合并到一起。過程如下所示。

  • 加載數據,并添加列的名稱

  • 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)
  • 獲取單位為十億(’B’)的數據

  • # 數據單位為 B的數據(Billion,十億)df_2016_b = df_2016[df_2016['Sales'].str.endswith('B')]
    print(df_2016_b.shape)
    df_2016_b
  • 獲取單位為百萬(‘M’)的數據

  • # 數據單位為 M的數據(Million,百萬)df_2016_m = df_2016[df_2016['Sales'].str.endswith('M')]
    print(df_2016_m.shape)
    df_2016_m

    這種方法理解起來比較簡單,但操作起來會比較繁瑣,尤其是如果有很多列數據需要處理的話,會花費很多時間。

    進一步的處理,我這里就不描述了。當然,各位可以試試這個方法。

    下面介紹稍微簡單一點的方法。

    2 處理方法 Method-2

    2.1 加載數據

    第一步還是加載數據,跟Method-1是一樣的。

    下面來處理’Sales’列

    2.2 替換相關的異常字符

    首先是替換相關的異常字符,包括美元的貨幣符號’$’,純字母的字符串’undefined’,以及’B’。 這里,我們想統一把數據的單位整理成十億,所以’B’可以直接進行替換。而’M’需要更多的處理步驟。

    2.3 處理’M’相關的數據

    處理含有百萬“M”為單位的數據,即以“M”結尾的數據,思路如下:

    (1)設定查找條件mask;

    (2)替換字符串“M”為空值

    (3)用pd.to_numeric()轉換為數字

    (4)除以1000,轉換為十億美元,與其他行的數據一致

    上面兩個步驟相關的代碼如下:

    # 替換美元符號df_2016['Sales'] = df_2016['Sales'].str.replace('$','')# # 查看異常值,均為字母(“undefined”)# df_2016[df_2016['Sales'].str.isalpha()]# 替換異常值“undefined”為空白# df_2016['Sales'] = df_2016['Sales'].str.replace('undefined','')df_2016['Sales'] = df_2016['Sales'].str.replace('^[A-Za-z]+$','')# 替換符號十億美元“B”為空白,數字本身代表的就是十億美元為單位df_2016['Sales'] = df_2016['Sales'].str.replace('B','')# 處理含有百萬“M”為單位的數據,即以“M”結尾的數據# 思路:# (1)設定查找條件mask;# (2)替換字符串“M”為空值# (3)用pd.to_numeric()轉換為數字# (4)除以1000,轉換為十億美元,與其他行的數據一致mask = df_2016['Sales'].str.endswith('M')
    df_2016.loc[mask, 'Sales'] = pd.to_numeric(df_2016.loc[mask, 'Sales'].str.replace('M', ''))/1000df_2016['Sales'] = pd.to_numeric(df_2016['Sales'])
    print('the shape of DataFrame: ', df_2016.shape)
    print(df_2016.dtypes)
    df_2016.head(3)

    用同樣類似的方法處理其他列

    可以看到,這個方法比第一種方法還是要方便很多。當然,這個方法針對DataFrame的每列數據都要進行相關的操作,如果列數多了,也還是比較繁瑣的。

    有沒有更方便一點的方法呢。 答案是有的。

    插播一條硬廣:技術文章轉發太多。文章來自微信公眾號“Python數據之道”(ID:PyDataRoad)。

    3 處理方法 Method-3

    在Method-2的基礎上,將處理方法寫成更通用的數據處理函數,根據數據的結構,拓展更多的適用性,則可以比較方便的處理相關數據。

    3.1 加載數據

    第一步還是加載數據,跟Method-1是一樣的。

    3.2 編寫數據處理的自定義函數

    參考Method-2的處理過程,編寫數據處理的自定義函數’pro_col’,并在Method-2的基礎上拓展其他替換功能,使之適用于這四列數據(“Sales”,“Profits”,“Assets”,“Market_value”)。

    函數編寫的代碼如下:

    def pro_col(df, col): # 替換相關字符串,如有更多的替換情形,可以自行添加df[col] = df[col].str.replace('$','')
     df[col] = df[col].str.replace('^[A-Za-z]+$','')
     df[col] = df[col].str.replace('B','')# 注意這里是'-$',即以'-'結尾,而不是'-',因為有負數df[col] = df[col].str.replace('-$','')
     df[col] = df[col].str.replace(',','')# 處理含有百萬“M”為單位的數據,即以“M”結尾的數據# 思路:# (1)設定查找條件mask;# (2)替換字符串“M”為空值# (3)用pd.to_numeric()轉換為數字# (4)除以1000,轉換為十億美元,與其他行的數據一致mask = df[col].str.endswith('M')
     df.loc[mask, col] = pd.to_numeric(df.loc[mask, col].str.replace('M',''))/1000# 將字符型的數字轉換為數字類型df[col] = pd.to_numeric(df[col])return df

    3.3 將自定義函數進行應用

    針對DataFrame的每列,應用該自定義函數,進行數據處理,得到需要的結果。

    pro_col(df_2016, 'Sales')
    pro_col(df_2016, 'Profits')
    pro_col(df_2016, 'Assets')
    pro_col(df_2016, 'Market_value')
    
    print('the shape of DataFrame: ', df_2016.shape)
    print(df_2016.dtypes)
    df_2016.head()

    當然,如果DataFrame的列數特別多,可以用for循環,這樣代碼更簡潔。代碼如下:

    cols = ['Sales', 'Profits', 'Assets', 'Market_value']for col in cols:
     pro_col(df_2016, col)
    
    print('the shape of DataFrame: ', df_2016.shape)
    print(df_2016.dtypes)
    df_2016.head()

    最終處理后,獲得的數據結果如下:

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Pandas數據處理實例展示:全球上市公司數據整理

    Pandas數據處理實例展示:全球上市公司數據整理:手頭現在有一份福布斯2016年全球上市企業2000強排行榜的數據,但原始數據并不規范,需要處理后才能進一步使用。本文通過實例操作來介紹用pandas進行數據整理。照例先說下我的運行環境,如下:windows 7, 64位python 3.5pandas 0.19.2版本在拿到
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 黄色成人在线观看 | 精品偷自拍另类在线观看 | 国产一区二区三区视频 | 国产网站在线 | 亚洲一区中文字幕在线 | 欧美特黄一区二区三区 | 国产在线精选免费视频8x | 欧美亚洲国产精品久久久 | 国产精品久久久久免费 | 国产三级一区 | 国产高清美女一级a毛片 | 国产在线午夜 | 欧美国产一区二区三区 | 国产成人精品一区二区三区… | 国产毛片一区二区三区精品 | 久久成人精品 | 欧美色欧美亚洲另类 | 欧美日韩中文 | 亚洲欧美日韩高清 | 久久91精品国产91 | 蜜桃视频一区二区三区四区 | 久久九九国产 | 国产伦精品一区二区三区视频小说 | 亚洲 欧美综合小说区图片区 | 全免费午夜一级毛片一级毛 | 欧美日韩国产码高清综合人成 | 亚洲精品乱码久久久久久v 亚洲精品免费观看 | 国产欧美在线观看一区二区 | 欧美色图中文字幕 | 亚韩在线| 一级网站在线观看 | 日本黄一级日本黄二级 | 精品欧美一区二区三区 | 亚洲 欧美 日韩 综合 | 午夜日本一区二区三区 | 亚洲欧美视频 | 日本精品久久久一区二区三区 | 亚洲精品123区 | 波多野结衣系列在线观看 | 国产精品久久久久免费 | 国模吧双双大尺度炮交gogo |