gpt4 book ai didi

python - Pandas :将字符串列转换为有序类别?

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:00 25 4
gpt4 key购买 nike

我是第一次使用 Pandas 。我有一个包含调查回复的专栏,可以采用“强烈同意”、“同意”、“不同意”、“强烈不同意”和“两者都不”的值。

这是列的 describe()value_counts() 的输出:

count      4996
unique 5
top Agree
freq 1745
dtype: object
Agree 1745
Strongly agree 926
Strongly disagree 918
Disagree 793
Neither 614
dtype: int64

我想对这个问题与总分进行线性回归。但是,我觉得我应该首先将该列转换为类别变量,因为它是固有顺序的。它是否正确?如果是这样,我应该怎么做?

我已经试过了:

df.EasyToUseQuestionFactor = pd.Categorical.from_array(df.EasyToUseQuestion)
print df.EasyToUseQuestionFactor

这产生的输出看起来似乎是正确的,但类别的顺序似乎是错误的。有什么方法可以指定顺序吗?我什至需要指定顺序吗?

这是我现在的其余代码:

df = pd.read_csv('./data/responses.csv')
lm1 = ols('OverallScore ~ EasyToUseQuestion', data).fit()
print lm1.rsquared

最佳答案

现在有两种方法。您的专栏将更具可读性并使用更少的内存。由于它将是分类类型,您仍然可以对值进行排序。

第一个是我的首选:

df['grades'].astype('category')

astype 用于接受 categories 参数,但它不是 present anymore .所以如果:

  • 您想以非字典顺序排列您的类别,
  • 或者拥有数据中不存在的额外类别,您必须使用以下解决方案。

此推荐来自docs

In [26]: from pandas.api.types import CategoricalDtype
In [27]: s = pd.Series(["a", "b", "c", "a"])
In [28]: cat_type = CategoricalDtype(categories=["b", "c", "d"],
....: ordered=True)
In [29]: s_cat = s.astype(cat_type)

创建额外值的额外提示:使用 df.column_name.unique() 从列中获取所有现有值并添加不存在的列名。

关于python - Pandas :将字符串列转换为有序类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25938557/

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