亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python之DataFrame按照規則批量修改某列的數據

系統 5069 0

     在使用Python進行數據分析時,我們經常會看一個數據的分布,然后對數據進行處理。比如說有一個場景:

以下數據是某個產品的提前預定期:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
%matplotlib inline
data = (pd.read_csv('D:/Users/Merchants_portrait.csv')).astype('int')
avg_days_befor = (data['avg_days_befor'].value_counts()).reset_index()
sns.barplot(x = avg_days_befor.index, y = avg_days_befor['avg_days_befor'])
plt.show() # 圖3

這個圖看起來比較丑,因為天數比較多,所以橫坐標密密麻麻

 image.png  

我們看下提前預定天數和每個預定天數的產品的情況

 avg_days_befor.head()

 

 image.png  

看下分布情況

#觀察下提前預定天數的分布
avg_days_befor.describe()

從下面表格可以看出,提前預定天數在0-633之間,75%的分布在200以內

 indexavg_days_befor
count259.000000259.000000
mean139.382239485.555985
std97.0807851240.626948
min0.0000001.000000
25%64.5000002.000000
50%129.00000017.000000
75%194.500000180.000000
max633.00000010273.000000

根據上面的分析,假如我們想把提前預定天數改為階段分布,我們可以按照如下來做:

我們先定義一個預定天數重寫的函數,然后使用lambda函數應用在那一列上,并且把結果更新到原來數據的該列上,如果不重寫到原來的數據上,那么原dataframe不會變

#對于提前預定天數重寫
def fun_avg_days_befor(x):
    if x <= 7:
        return 1
    elif x > 7 and x <= 14:
        return 2
    elif x > 14 and x <= 21:
        return 3
    elif x > 21 and x <= 28:
        return 4
    elif x > 28 and x <= 35:
        return 5
    elif x > 35 and x <= 42:
        return 6
    elif x > 42 and x <= 49:
        return 7
    elif x > 49 and x <= 56:
        return 8
    elif x > 56 and x <= 63:
        return 9
    else:
        return 10

#將數據生效在原dataframe上
data['avg_days_befor'] = data['avg_days_befor'].apply(lambda x:fun_avg_days_befor(x))

avg_days_befor = (data['avg_days_befor'].value_counts()).reset_index()

 

我們先看下改變后的結果:

sns.barplot(x = avg_days_befor.index, y = avg_days_befor['avg_days_befor'])
plt.show() # 圖3

 

 image.png  

可以看出,結果已經更改到原來的數據集上了。

那么,如果我們直接執行語句,不復寫原來的dataframe呢?我們看下結果

#對于提前預定天數重寫
def fun_avg_days_befor(x):
    if x <= 7:
        return 1
    elif x > 7 and x <= 14:
        return 2
    elif x > 14 and x <= 21:
        return 3
    elif x > 21 and x <= 28:
        return 4
    elif x > 28 and x <= 35:
        return 5
    elif x > 35 and x <= 42:
        return 6
    elif x > 42 and x <= 49:
        return 7
    elif x > 49 and x <= 56:
        return 8
    elif x > 56 and x <= 63:
        return 9
    else:
        return 10

data['avg_days_befor'].apply(lambda x:fun_avg_days_befor(x))

 

從下面結果可以看出,他只是個簡單結果,再查看原來的dataframe是不會有任何改變的

 image.png  


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本亚洲欧美国产日韩ay高清 | 久久机热这里只有精品无需 | 日本欧美中文字幕 | 国产精品精品 | 亚洲视频在线免费 | 福利影院第一页 | 欧美成人午夜影院 | 九九精品视频在线播放 | 一区二区三区在线 | 日本 | 97久久影院 | 一区在线观看 | 中日韩欧美一级毛片 | 亚洲国产欧洲综合997久久 | 日本中文字幕在线观看视频 | 在线播放真实国产乱子伦 | 国产剧情一区二区三区 | 国产毛片在线看 | 天天干天天操天天操 | 天天久久 | 777奇米影视视频在线播放 | 午夜精品在线免费观看 | 欧美亚洲日本国产 | 免费两性的视频网站 | 99热久久精品国产 | 午夜伦情电午夜伦情影院 | 特黄未满14周岁毛片 | 国产精品久久久99 | 国产精品欧美日韩视频一区 | 综合成人在线 | 中文字幕国产在线观看 | 欧美一二三| 在线观看欧洲成人免费视频 | 亚洲国产乱| 国产成人综合在线视频 | 久久国产综合尤物免费观看 | 中文字幕人成不卡一区 | 免费观看美女光子让男人玩 | 久久久久国产精品免费免费 | 亚洲精品欧美一区二区三区 | 97视频在线免费播放 | a级高清观看视频在线看 |