Python—数据集值的比例
我一直在尝试创建一个函数,该函数从给定数据帧的一部分值中返回一个数据帧 例如,在回答调查的一组客户中,56%是女性,44%是男性 这是我建立的功能:Python—数据集值的比例,python,pandas,function,loops,Python,Pandas,Function,Loops,我一直在尝试创建一个函数,该函数从给定数据帧的一部分值中返回一个数据帧 例如,在回答调查的一组客户中,56%是女性,44%是男性 这是我建立的功能: def proportion_to_the_whole_dataset(dataset,dataset_column): proportion_dataset = pd.DataFrame(columns=[dataset_column.name,'%']) for i in range(dataset_column.value_c
def proportion_to_the_whole_dataset(dataset,dataset_column):
proportion_dataset = pd.DataFrame(columns=[dataset_column.name,'%'])
for i in range(dataset_column.value_counts().index.size):
for element in dataset_column.value_counts().index:
proportion_dataset = pd.DataFrame({dataset_column.name: element,'%': round((dataset[dataset_column == element].size/dataset.size)*100,2)},index=[i])
return proportion_dataset
然而,我得到的结果是:
性别%
0男44.0
我使用的循环中是否存在任何问题?每次变量
比例\u数据集
时,您都会覆盖。您可以为每个循环追加结果,并像下面这样将其串联起来作为返回
def proportion_to_the_whole_dataset(dataset,dataset_column):
proportion_dataset = pd.DataFrame(columns=[dataset_column.name,'%'])
temp = []
for i in range(dataset_column.value_counts().index.size):
for element in dataset_column.value_counts().index:
temp.append(pd.DataFrame({dataset_column.name: element,'%': round((dataset[dataset_column == element].size/dataset.size)*100,2)},index=[i]))
return pd.concat(temp)
正如所建议的,你的方法并没有利用熊猫的力量。因此,更好的解决方案是:
def proportion(df, col):
df = df[col].value_counts(normalize=True) * 100
df = df.to_frame()
df.reset_index(inplace=True)
df.columns = [col, '%']
return df
其中col是作为字符串分析的列名您希望得到什么输出?“是吗?坦率地说,在《熊猫》中这样循环听起来完全是对图书馆的滥用。”物理学家完全同意。。但他问自己的循环出了什么问题,而不是另一种方法。。soYou从技术上回答了这个问题,这就是为什么我没有投反对票。但是你也没有给出首选的解决方案,这就是为什么我没有投票的原因。@Madpoistics better now?@Caio Garcia,如果这是你想要的,请接受答案