Python 如何将调查结果转换为调查对象总数的百分比?
对2233名受访者进行了一项调查,结果如下所示,Python 如何将调查结果转换为调查对象总数的百分比?,python,pandas,Python,Pandas,对2233名受访者进行了一项调查,结果如下所示,非常感兴趣、有点感兴趣和不感兴趣 Very interested Somewhat interested Not interested A. 1688, 444, 60, B 1629, 477,
非常感兴趣
、有点感兴趣
和不感兴趣
Very interested Somewhat interested Not interested
A. 1688, 444, 60,
B 1629, 477, 74,
C 1340, 734, 102,
D 1332, 729, 127,
E 1263, 770, 136,
如何将这些数字转换为受访者总数的百分比,即2233,并将百分比四舍五入到小数点后2位?编辑
我刚刚用您提供的数据编写了一个小excel文件,它成功了:
我使用了以下excel文件:
Very Interested Somewhat Interested Not Interested
A 1688 444 60
B 1629 477 74
C 1340 734 102
D 1332 729 127
以及守则:
df = pandas.read_excel('./test.xlsx', sep=',', delimiter=None)
df = df.astype(float)
df = (100. * df/2233).round(2)
因此,首先我加载我的excel文件并将其放入一个数据框,然后我将所有整数转换为浮点数,这样在存储2点浮点数时,小数就不会被截断。。然后对所有索引和列进行迭代,生成数学表达式并将其存储在正确的位置。然后就完成了。为我工作
如果要将数据框保存回excel文件,可以这样做:
writer = pd.ExcelWriter('output-in-percent.xlsx')
test.to_excel(writer, 'Sheet1')
writer.save()
使用您的示例数据,我删除了逗号,以便将其转换为int,然后用百分比交换实际值:
for col in list(df):
df[col] = df[col].str.replace(',','')
df[col] = pd.to_numeric(df[col])
(100. * df / 2233).round(2)
输出:
Very interested Somewhat interested Not interested
A. 75.59 19.88 2.69
B 72.95 21.36 3.31
C 60.01 32.87 4.57
D 59.65 32.65 5.69
E 56.56 34.48 6.09
在您的情况下,我相信下面的代码会有所帮助
df=(df/2233).style.format("{:.2%}")
谢谢迈克的编辑。它看起来更好。顺便说一句,如果有更精通python和pandas的人能纠正我的尝试,我将不胜感激。非常感谢。但是我已经试过了,但是没有用。非常感谢你的尝试。我也试过了,但没用,正是因为它在上面,唯一的事情是我在所有的数字上加了逗号,使它们保持在列中。1688年的逗号实际上是1688,其他的也是。不,我编辑了我的帖子。这太棒了。非常感谢不客气!如果解决了,请随意标记为正确嗨,乔希。请你取消str命令好吗。我刚刚尝试了这些代码,但从那以后我一直收到错误消息。可能是因为我自己的数据中确实没有字符串参数可替换吗?感谢Sam在这方面真的很新,我的数据是.csv文件。请不要使用excel,请在没有字符串的情况下编写代码。感谢使用上述代码,我收到以下错误消息:无法分析位置0处的“字符串数据/分析/统计信息”。请说明我没有做什么。请回答上下文阻止删除的要求。
df=(df/2233).style.format("{:.2%}")