日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python之DataFrame按照規(guī)則批量修改某列的數(shù)據(jù)

系統(tǒng) 5489 0

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

以下數(shù)據(jù)是某個產品的提前預定期:

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

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

 image.png  

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

 avg_days_befor.head()

 

 image.png  

看下分布情況

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

從下面表格可以看出,提前預定天數(shù)在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

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

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

#對于提前預定天數(shù)重寫
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

#將數(shù)據(jù)生效在原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  

可以看出,結果已經(jīng)更改到原來的數(shù)據(jù)集上了。

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

#對于提前預定天數(shù)重寫
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  


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 隆昌县| 淳安县| 哈尔滨市| 榆中县| 临邑县| 长春市| 公主岭市| 安岳县| 永寿县| 札达县| 平遥县| 历史| 布尔津县| 湄潭县| 婺源县| 平谷区| 贵州省| 白山市| 潞城市| 靖安县| 夹江县| 中卫市| 靖宇县| 庆云县| 大同市| 集安市| 武乡县| 积石山| 澳门| 定远县| 五指山市| 博客| 本溪| 永仁县| 阳泉市| 河北省| 陆良县| 连江县| 霍邱县| 稻城县| 潜山县|