【问题标题】:How to count frequencies of columns in python3 dataframe如何计算python3数据框中列的频率
【发布时间】:2018-12-19 18:16:51
【问题描述】:

大家好,我有一个数据框,其中的列是这样的。 列:

  • WhiteRating(int)
  • BlackRating(int)
  • NewGameNinePtLead(str, 确定位置是否为“missedMate”、“lostBigLead”、“无用”)
  • 平均评分
  • Rating_Group:X 分组评级
  • length_of_checkmate(将棋的移动量,int):这是我的y

在此数据框内,每一行都是具有所有这些列属性的单个观察值。 我的任务是计算变量 P,然后对 x 回归 p,对 y 回归 p,最后对 (x 和 y) 回归 p P=(具有 y 值并丢失的移动数)/(具有 y 值的移动总数)

我的问题是为我的小组寻找 P。我不确定如何以 Python 的方式处理这个问题,我可以手动循环并计算所有内容,但即便如此我也不确定如何处理它,而且我的数据框的大小可能需要很长时间

WhiteR,BlackR,EMV,MovePlayedValue,NewGame,NinePtLead,AverageRating,Rating_Group,length_of_checkmate
1880.0,1865.0,27.0,27.0,1,useless,1875,1800,0
1880.0,1865.0,22.0,21.0,1,useless,1875,1800,0
1865.0,1880.0,25.0,25.0,1,useless,1875,1800,0
1880.0,1865.0,24.0,19.0,1,useless,1875,1800,0
1865.0,1880.0,22.0,22.0,1,useless,1875,1800,0
1880.0,1865.0,27.0,27.0,1,bigLeadLost,1875,1800,2

【问题讨论】:

  • 您能否包含一个数据框的小样本? df.head(10)
  • 刚添加进去,谢谢提醒!
  • 多行最好...
  • 如何定义“值为 y 的移动”?
  • 这是根据length_of_checkmate列确定的,它的int值都引用了多少步将checkmate

标签: python python-3.x pandas


【解决方案1】:

如果我正确理解了您的问题:您想要导致失败的 y 类型的频率(非零类型),除以 y 的总移动(y 的类型):

import pandas as pd
import numpy as np

df = {'WhiteR': [1880.0,1880.0,1865.0,1880.0,1865.0,1880.0],\
  'BlackR': [1865.0,1865.0,1880.0,1865.0,1880.0,1865.0],\
  'EMV': [27.0,22.0,25.0,24.0,22.0,27.0,],\
  'MovePlayedValue':[27.0,21.0,25.0,19.0,22.0,27.0,],\
  'NewGame':[1,1,1,1,1,1],\
  'NinePtLead':['useless','useless','useless','useless','useless','bigLeadLost'],\
  'AverageRating':[1875,1875,1875,1875,1875,1875],\
  'Rating_Group':[1800,1800,1800,1800,1800,1800,],\
  'length_of_checkmate':[0,0,0,0,0,2]}


df = pd.DataFrame(df)
status=df['length_of_checkmate'].value_counts().reset_index().rename(columns={'index': 
'length_of_checkmate', 'length_of_checkmate': 'Freq.'})

df1 = pd.merge(df, status, on = ('length_of_checkmate'))
df1['P']= (df1['Freq.']/df1['length_of_checkmate']).replace(np.inf, 0)

#then proceed to 'Regress p against x, regress p against y and finally p against (x and y)'

【讨论】:

  • 关于你的代码的几个问题,我还没有测试过,我想先了解一些事情。 1) reset_index() 究竟做了什么,我已经看到它使用了很多次,但遗憾的是无法理解它 2) numpy.inf 的 .replace(np.inf,0) 就像无穷大一样。为什么有这种说法?非常感谢您为此付出的努力!
  • 1) rest_index() 用于重命名列 2) .replace(np.inf,0) 用于除以 0 行,您可以在后面的步骤中忽略 rows = 0,到目前为止,这里的步骤仅用于计算 P。由于您将使用 X
  • 这太棒了!!!!!!!非常感谢,我只是有点困惑你怎么能做 value_counts().reset_index().rename()。这部分令人困惑,因为数据帧的长度不必在整个数据帧中保持不变吗?
  • 忘了再问一件事,这个生成的 P 是针对所有移动的。如何仅为 Group_Rating 定义它。所以要把这两者关联起来
猜你喜欢
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2021-06-10
  • 1970-01-01
  • 2022-11-28
相关资源
最近更新 更多