gpt4 book ai didi

python - 使用 Pandas 创建/重命名类别

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:47 26 4
gpt4 key购买 nike

我正在使用 pandas (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")

调查中还询问了参与者的年龄。因此年龄现在看起来确实像这样,其中 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),但我就是无法让它正常工作。

对此有什么可行的解决方案?提前致谢!

最佳答案

使用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

更新:

映射:

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

关于python - 使用 Pandas 创建/重命名类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44314670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com