Python 熊猫计数正/负/中性值
在Python Pandas中,我有一个数据框,其中包含以下格式的列和记录:Python 熊猫计数正/负/中性值,python,pandas,group-by,aggregate,pandas-groupby,Python,Pandas,Group By,Aggregate,Pandas Groupby,在Python Pandas中,我有一个数据框,其中包含以下格式的列和记录: text source senti ------------------------------- great food site1 0.6 awful staff site4 -0.4 good chef site8 0.4 average food site6 0.05 bad food site2 -0.8
text source senti
-------------------------------
great food site1 0.6
awful staff site4 -0.4
good chef site8 0.4
average food site6 0.05
bad food site2 -0.8
文本栏本质上是对某事物的描述或观点。我想得出一些关于数据集平均情绪的结论,输出如下
sentiment count
----------------
positive 2
neutral 1
negative 2
其中,我们将“senti”计数分为正、负或中性
在满足以下条件时,情感被视为每组:
- 积极记录的情绪>0.1
- 中性记录得分>-0.1,我会使用
+pd.cut
groupby
cut = pd.cut( df.senti, [-np.inf, -.1, .1, np.inf], labels=['positive', 'neutral', 'negative'] ) df.groupby(cut).senti.count().reset_index(name='count') senti count 0 positive 2 1 neutral 1 2 negative 2
正如@root所指出的,pd.value\u counts对
变量给出了相同的解决方案cut
pd.value_counts(cut, sort=False).rename_axis('senti').reset_index(name='count')
使用
映射到组的另一个版本:apply
df.groupby(df['senti'].apply(lambda x: 'negative' if x < -0.1 else 'positive' if x > 0.1 else 'neutral'))['senti'].count()
使用df.groupby(df['senti'].apply(λx:'negative'如果x<0.1,则为'positive'如果x>0.1,则为'neutral'))['senti'].count()
与自定义料仓使用pandas.qcut
应给出相同的结果,但比使用值_计数
要快一点,即分组方式
。正数和负数是错误的,但它可以工作@刘易桑德森喊道:-)很高兴我能帮上忙。pd.cut(…).value_计数()