Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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_Python 3.x_Pandas - Fatal编程技术网

Python 按日期列出的列值的比例分布

Python 按日期列出的列值的比例分布,python,python-3.x,pandas,Python,Python 3.x,Pandas,我试图每天得到数据集中每个类别的比例,以便最终能够绘制它 样本(每日使用量): 我用以下代码按类型绘制了平均值和中位数: daily_usage.groupby('type')['count'].agg(['median','mean']).plot(kind='bar') 但我想要一个类似的图,用每日计数的比例来代替。然而,为了最终绘制它,我不需要显示日期。这只是为了显示每种类型的平均/中位日比例 我的意思是,举例来说,第一行的比例解释是:A型在3月1日发生了70次;考虑到3月1日的所有其

我试图每天得到数据集中每个类别的比例,以便最终能够绘制它

样本(每日使用量):

我用以下代码按类型绘制了平均值和中位数:

 daily_usage.groupby('type')['count'].agg(['median','mean']).plot(kind='bar')
但我想要一个类似的图,用每日计数的比例来代替。然而,为了最终绘制它,我不需要显示日期。这只是为了显示每种类型的平均/中位日比例

我的意思是,举例来说,第一行的比例解释是:A型在3月1日发生了70次;考虑到3月1日的所有其他事件,总共有948个事件。3月1日的A类比例为70/948。这将对所有行进行计算。最终绘图必须在x轴上显示每种类型,在y轴上显示每日平均比例

我试着用两种方法得到这个比例

第一个:

daily_usage['ratio'] = (daily_usage / daily_usage.groupby('date').transform(sum))['count']
第一次尝试中的分母给了我这个示例输出,所以看起来用这个新的daily count列除以原始计数列应该很容易:

           count
0    ...   948
1    ...   910
2    ...   588
3    ...   786
4    ...   530
5    ...  1043
错误:

TypeError: unsupported operand type(s) for /: 'str' and 'str'
 TypeError: ufunc true_divide cannot use operands with types dtype('<M8[ns]') and dtype('<M8[ns]')
第二个:

daily_usage.div(day_total,axis='count')
其中
day\u total=daily\u usage.groupby('date').agg({'count':'sum'})。reset\u index()

错误:

TypeError: unsupported operand type(s) for /: 'str' and 'str'
 TypeError: ufunc true_divide cannot use operands with types dtype('<M8[ns]') and dtype('<M8[ns]')

TypeError:ufunc true\u divide不能使用类型为dtype(“的操作数如果您只想在数据帧中有新列,可以执行以下操作:

df['ratio'] = (df.groupby(['type','date'])['count'].transform(sum) / df.groupby('date')['count'].transform(sum))
然而,现在我已经将近20分钟了,我正试图弄清楚你想要准确地绘制什么,因为我仍然没有真正理解你的意图,我要求你留下一个详细的评论,以防你需要帮助绘制和准确地绘制什么以及如何绘制(每天的日常使用图或其他形式)

附言:

在我的代码中,
df
指的是您的
日常使用情况
dataframe


希望这是有帮助的。

sooo只是删除了
x轴
,并用同样的第一种方法绘制了足够多的图?因为这很容易做到。我不明白删除x轴的意思。你能解释一下吗?我指的比例解释是,例如,第一行:A型在3月1日发生了70次;co考虑到3月1日的所有其他事件,总共有948个事件。3月1日类型a的比例为70/948。这将对所有行进行计算。最终的绘图必须在x轴上显示每个类型,在y轴上显示平均每天的比例。我相信这很容易。我只是python的一个大新手。/好的,给我一秒钟到crea在回答(确保和诸如此类)你的输出是什么之前测试一个样本数据帧你做了!!非常感谢!我已经得到了图。我只是在原始代码中替换了新的“比率”列而不是“计数”列。哦,就是这样吗?我想还有一些事情要做:p很高兴我能帮助@Helk