2017-06-01 113 views
1

我用熊貓(Python 2.7版),使用到評估調查(部分)下面的代碼:創建/重命名分類與熊貓

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

首先閱讀該.csv

df = pd.read_csv("data_project_638595_2017_05_23.csv", sep=';',usecols=range(6,82) + range(92,112)) 

重命名列(這是一個例子):

df.rename(columns={"v_27" : "age"}, inplace=True) 

集的數據類型對於所有實施例(這是一個例子):

df["age"] = df["age"].astype("category") 

年齡也被要求在參與調查的cateogries參與者。因此,年齡看起來現在這個樣子,其中2.0 =「20-29歲」:

df.age 

     age 
... 
333 2.0 
336 2.0 
338 2.0 
Name: age, dtype: category 
Categories (5, float64): [1.0, 2.0, 3.0, 4.0, 5.0] 

,其計這樣的:

df.age.value_counts() 

2.0 178 
3.0  29 
5.0  3 
4.0  2 
1.0  2 
Name: age, dtype: int64 

我現在想要做的是建立和重命名以下類別(這也意味着,提出「60 +」具有0計數和分類也應訂購):

['0-19', '20-29', '30-39', '40-49', '50-59', '60+'] 

我試過幾種方法(如rename_categories),但我只是無法得到它應該像它應該那樣工作。

什麼是可行的解決方案?提前致謝!

回答

0

pd.cut使用方法:

df['new'] = pd.cut(df.age, 
        bins=[0, 19, 29, 39, 49, 59, 999], 
        labels=['0-19', '20-29', '30-39', '40-49', '50-59', '60+'], 
        include_lowest=True) 

演示:

In [103]: df = pd.DataFrame(np.random.randint(100, size=(10)), columns=['age']) 

In [104]: df 
Out[104]: 
    age 
0 10 
1 64 
2 84 
3 14 
4 4 
5 31 
6 98 
7 22 
8 49 
9 50 

In [105]: df['new'] = pd.cut(df.age, 
    ...:     bins=[0, 19, 29, 39, 49, 59, 999], 
    ...:     labels=['0-19', '20-29', '30-39', '40-49', '50-59', '60+'], 
    ...:     include_lowest=True) 

In [106]: df 
Out[106]: 
    age new 
0 10 0-19 
1 64 60+ 
2 84 60+ 
3 14 0-19 
4 4 0-19 
5 31 30-39 
6 98 60+ 
7 22 20-29 
8 49 40-49 
9 50 50-59 

UPDATE:

映射:

In [20]: d 
Out[20]: {0: '0-19', 1: '20-29', 2: '30-39', 3: '40-49', 4: '50-59', 5: '60+'} 

來源DF:

In [21]: df 
Out[21]: 
    age 
0 0 
1 3 
2 2 
3 3 
4 4 
5 2 
6 0 
7 3 
8 2 
9 4 

映射年齡:

In [22]: df.age.map(d) 
Out[22]: 
0  0-19 
1 40-49 
2 30-39 
3 40-49 
4 50-59 
5 30-39 
6  0-19 
7 40-49 
8 30-39 
9 50-59 
Name: age, dtype: object 
+0

我剛剛意識到我的介紹可能是一個有點混亂。這將工作,如果我將年齡作爲一個整數。其實年齡已經在熊貓式的規範中。我編輯了我的問題。 – cian

+0

@cian,我已更新我的文章 - 請檢查 – MaxU

+0

真棒,工作完美!謝謝! – cian