【发布时间】:2018-09-25 12:39:25
【问题描述】:
我是 Python 编程新手。目前,我尝试制作一个能够在条形图顶部以小数点后 2 位显示百分比的图表。
df_survey 是我使用 pandas 库制作的数据框。 (我尝试将 datafame df_survey_sort 复制到 df_survey_pct 但是当我在 df_survey_pct 中进行更改时,df_survey_sort 也会更改...有人可以向我解释为什么会发生这种情况。结果,我执行以下操作以使 df_survey_sort 和 df_survey_pct 不会相互覆盖)
df_survey = df_survey[['Very interested','Somewhat interested','Not interested']]
df_survey_sort = df_survey.sort_values(by='Very interested', ascending=0)
#df_survey_pct = df_survey_sort
df_survey_pct = df_survey.sort_values(by='Very interested', ascending=0)
total_ds = df_survey_sort.sum(axis=1)
for i in range(0,df_survey_sort.shape[0]):
df_survey_pct.iloc[i][0] = round(df_survey_sort.iloc[i][0]/total_ds[i]*100,2)
df_survey_pct.iloc[i][1] = round(df_survey_sort.iloc[i][1]/total_ds[i]*100,2)
df_survey_pct.iloc[i][2] = round(df_survey_sort.iloc[i][2]/total_ds[i]*100,2)
这是 df_survey_pct 的数据类型
Very interested int64
Somewhat interested int64
Not interested int64
dtype: object
当我执行print(df_survey_pct)时,每个单元格的值都不是小数位。
我什至尝试了df_survey_pct = df_survey_pct.round(2) 和df_survey_pct = df_survey_pct.astype('float'),但值仍然是整数。
因此,我只能在条形图中显示整数百分比。
【问题讨论】:
-
你能分享列的 dtypes ['非常感兴趣','有点感兴趣','不感兴趣'] 另外,你是否只有 3 行在 for 循环中按顺序循环?这不是很高效。
-
分享一些样本输入和期望的输出?
-
@devssh 我的循环性能如何?
-
因为 for 循环没有并行化,所以 dataframe["column"] 给出了一个 pd.Series 并且 pd.Series.apply 是并行的,因为它是矢量化的。