• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 久久国产精品成人免费| 久久精品国产一区| 亚洲av午夜福利精品一区人妖| 国产精品久久久久久福利漫画 | 国产精品玖玖美女张开腿让男人桶爽免费看 | 国产精品小黄鸭一区二区三区| 国产日韩精品欧美一区| 亚洲国产精品人人做人人爽| 999国产精品视频| 精品视频无码一区二区三区| 精品一区二区三区四区在线| 精品久久久久久| 狼色精品人妻在线视频| 亚洲精品视频免费| 国产69精品久久久久99| 97久久超碰成人精品网站| 在线观看91精品国产网站| 国产精品网址在线观看你懂的| 国产精品污WWW在线观看| 在线观看国产精品普通话对白精品 | 国产午夜精品一本在线观看| 99精品热这里只有精品| 亚洲精品永久在线观看| 国产精品主播一区二区| 极品精品国产超清自在线观看| 亚洲AV无码成人网站久久精品大 | 国产成人精品免费久久久久| 亚洲欧美日韩久久精品| 精品一区二区三区四区在线| 久久99精品综合国产首页| 国内精品久久人妻互换| 自拍中文精品无码| 欧美精品黑人粗大视频| 国产精品熟女福利久久AV| 久久国产精品一区二区| 国产精品伦一区二区三级视频 | 久久精品a亚洲国产v高清不卡| 亚洲精品欧美二区三区中文字幕| 2024最新国产精品一区| 国产午夜精品视频| 国产精品夜色一区二区三区 |