Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将调查结果转换为调查对象总数的百分比?_Python_Pandas - Fatal编程技术网

Python 如何将调查结果转换为调查对象总数的百分比?

Python 如何将调查结果转换为调查对象总数的百分比?,python,pandas,Python,Pandas,对2233名受访者进行了一项调查,结果如下所示,非常感兴趣、有点感兴趣和不感兴趣 Very interested Somewhat interested Not interested A. 1688, 444, 60, B 1629, 477,

对2233名受访者进行了一项调查,结果如下所示,
非常感兴趣
有点感兴趣
不感兴趣

                    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%}")