我想编写一个函数,该函数接收一个Panda数据帧和一个给定的系列名称,并检索该系列的唯一值及其在数据集中的频率。
def getUniqueValuesByField(dataframe, fieldname):
''' Retrive for non-numerical series the unique values and their frequencies '''
result = dataframe.fieldname.apply(lambda x: pd.Series(x)).unstack().value_counts(normalize=True, sort=True, ascending=False, bins=None, dropna=True)
#dataframe[fieldname].unique()
return result
然后,我可以这样调用这个函数:
df = pd.DataFrame.from_dict(RequestsDict)
getUniqueValuesByField(df, 'detected_language')
getUniqueValuesByField(df, 'detected_vertical')
有可能吗?我试图连接字符串并使用eval()函数,但我不确定这是正确的方法。
像这样使用.value_counts()
:
In [35]: df = pd.DataFrame(['foo','bar','baz', 'foo','bar'], columns=['test'])
In [36]: df['test'].value_counts()
Out[36]:
foo 2
bar 2
baz 1
dtype: int64