从pyspark转换在Pandas数据帧上实现Plotly

丘文森

我想使用pandas数据框生成绘图。我在这个话题上苦苦挣扎。

现在,我有这个:

           AGE_GROUP                       shop_id         count_of_member
0                 10                             1                      40
1                 10                            12                   57615
2                 20                             1                     186
4                 30                             1                     175
5                 30                            12                  322458
6                 40                             1                     171
7                 40                            12                  313758
8                 50                             1                     158
10                60                             1                     168

一些商店可能没有记录。作为一个例子,plotly需要x=[1,2,3]y=[4,5,6]如果我的输入是x=[1,2,3]y=[4,5],则x和y的大小不同,并且将引发异常。我需要为缺少的shop_id添加一个空值记录。所以,我需要这个:

           AGE_GROUP                       shop_id         count_of_member
0                 10                             1                      40
1                 10                            12                   57615
2                 20                             1                     186
3                 20                            12                       0
4                 30                             1                     175
5                 30                            12                  322458
6                 40                             1                     171
7                 40                            12                  313758
8                 50                             1                     158
9                 50                            12                       0
10                60                             1                     168
11                60                            12                       0

对于每个age_group,我需要有2个shop_id,因为shop_id的唯一集合是1,如果有10个age_group,则为12,将显示20行。例如:

           AGE_GROUP                       shop_id         count_of_member
1                 10                            12                   57615
2                 20                             1                     186
3                 30                             1                     175
4                 40                             1                     171
5                 40                            12                  313758
6                 50                             1                     158
7                 60                             1                     168

有2个唯一的shop_id:1和12,以及6个不同的age_group:age_group 10中的10、20、30、40、50、60:仅存在shop_id 12,但没有shop_id1。因此,我需要有一个新记录来显示shop_id 1的age_group 10的count_of_member为0。我最终得到的数据帧应为:

           AGE_GROUP                       shop_id         count_of_member
1                 10                            12                   57615
**1                 10                             1                       0**
2                 20                             1                     186
**2                 20                            12                       0**
3                 30                             1                     175
**3                 30                            12                       0**
4                 40                             1                     171
5                 40                            12                  313758
6                 50                             1                     158
**6                 50                            12                       0**
7                 60                            12                       0
7                 60                             1                     168

** are the new added rows

我如何实现这种转变?

背心

我如何实现这种转变?

首先,您不必如果使用得当,plotly可以使用多种方法来可视化数据集,就像第三个样本中的数据一样:

           AGE_GROUP                       shop_id         count_of_member
1                 10                            12                   57615
2                 20                             1                     186
3                 30                             1                     175
4                 40                             1                     171
5                 40                            12                  313758
6                 50                             1                     158
7                 60                             1                     168

无需使用熊猫来获得第四个样本的结构。您不确定要如何处理此样本,但我怀疑您要像这样显示count_of_member每个age group分割的累计shop_id吗?

在此处输入图片说明

您可能想知道为什么蓝色条shop_id1没有显示。但这仅仅是因为数字的大小差异如此之大。如果您将的小分子替换count_of_membershop_id=1与的可比性更shop_id=12,则会得到以下替代:

在此处输入图片说明

以下是完整的代码段,其中已注释掉更改后的数据集。使用的数据集仍然与第三个数据样本中的数据集相同。

完整的代码:

# imports
import plotly.graph_objects as go
import pandas as pd

data = {'AGE_GROUP': {0: 10, 1: 10, 2: 20, 4: 30, 5: 30, 6: 40, 7: 40, 8: 50, 10: 60},
                     'shop_id': {0: 1, 1: 12, 2: 1, 4: 1, 5: 12, 6: 1, 7: 12, 8: 1, 10: 1},
                     'count_of_member': {0: 40,
                      1: 57615,
                      2: 186,
                      4: 175,
                      5: 322458,
                      6: 171,
                      7: 313758,
                      8: 158,
                      10: 168}}

## Optional dataset
# data = {'AGE_GROUP': {0: 10, 1: 10, 2: 20, 4: 30, 5: 30, 6: 40, 7: 40, 8: 50, 10: 60},
#                      'shop_id': {0: 1, 1: 12, 2: 1, 4: 1, 5: 12, 6: 1, 7: 12, 8: 1, 10: 1},
#                      'count_of_member': {0: 40,
#                       1: 57615,
#                       2: 186000,
#                       4: 175000,
#                       5: 322458,
#                       6: 171000,
#                       7: 313758,
#                       8: 158000,
#                       10: 168000}}

# # Create DataFrame 
df = pd.DataFrame(data)

# Manage shop_id
shops = df['shop_id'].unique()

# set up plotly figure
fig = go.Figure()

# add one trace per NAR type and show counts per hospital
for shop in shops:

    # subset dataframe by shop_id
    df_ply=df[df['shop_id']==shop]

    # add trace
    fig.add_trace(go.Bar(x=df_ply['AGE_GROUP'], y=df_ply['count_of_member'], name='shop_id'+str(shop)))

fig.show()

编辑:

如果由于某种原因仍需要像第四个示例中那样构造数据,建议您提出另一个问题,[pandas][python] 使用标记它,并专注于问题的数据转换部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过 pyspark.sql.dataframe 将 XML 数据转换为 Pandas 数据帧

来自分类Dev

如何提高PyArrow以外的pyspark到pandas数据帧转换的效率

来自分类Dev

在 Pandas 数据帧上使用转换函数,为数据帧的每一行返回新值

来自分类Dev

数据帧上的R对数转换

来自分类Dev

从 Pandas 数据帧转换为 LabeledPoint RDD

来自分类Dev

如何转换 Pandas 数据帧架构

来自分类Dev

无法使用pyspark数据帧将utm转换为latlong

来自分类Dev

如何在pyspark中将密集向量转换为数据帧?

来自分类Dev

如何根据pyspark数据帧中的条件转换日期格式?

来自分类Dev

如何在pyspark中将嵌套字典转换为数据帧?

来自分类Dev

将pyspark数据帧转换为嵌套的json结构

来自分类Dev

在pyspark中将rdd转换为没有模式的数据帧

来自分类Dev

Pandas 数据帧上的 group by 期间的错误

来自分类Dev

将列的字典从不同的数据帧转换为数据帧:pyspark

来自分类Dev

如何在pyspark数据帧上使用forEachPartition?

来自分类Dev

熊猫udf在PySpark数据帧行上循环

来自分类Dev

在 pyspark 中的数据帧上应用 udf 后出错

来自分类Dev

如何将日期时间的数据帧转换为仅时间?基本上删除Python Pandas中的date元素

来自分类Dev

多行时间序列按属性在另一个数据帧中进行颜色编码(pandas / R上为plotly / ggplot2)

来自分类Dev

如何将for循环的结果转换为pandas数据帧?

来自分类Dev

将 Pandas 数据帧转换为字典并添加公共键值对

来自分类Dev

numpy 数组到 Pandas 数据帧的转换 - ValueError

来自分类Dev

使用循环使用 Pandas 转换多个数据帧

来自分类Dev

Beckhoff TwinCat Scope CSV 格式转换为 Pandas 数据帧

来自分类Dev

在Pandas中将一级混合标头数据帧转换为垂直数据帧

来自分类Dev

如何在 Pyspark 中保持剩余数据帧相同的同时转换一列数据帧?

来自分类Dev

如何过滤pyspark数据帧

来自分类Dev

遍历pyspark中的数据帧

来自分类Dev

在Pandas数据帧上并行化操作时速度较慢

Related 相关文章

  1. 1

    通过 pyspark.sql.dataframe 将 XML 数据转换为 Pandas 数据帧

  2. 2

    如何提高PyArrow以外的pyspark到pandas数据帧转换的效率

  3. 3

    在 Pandas 数据帧上使用转换函数,为数据帧的每一行返回新值

  4. 4

    数据帧上的R对数转换

  5. 5

    从 Pandas 数据帧转换为 LabeledPoint RDD

  6. 6

    如何转换 Pandas 数据帧架构

  7. 7

    无法使用pyspark数据帧将utm转换为latlong

  8. 8

    如何在pyspark中将密集向量转换为数据帧?

  9. 9

    如何根据pyspark数据帧中的条件转换日期格式?

  10. 10

    如何在pyspark中将嵌套字典转换为数据帧?

  11. 11

    将pyspark数据帧转换为嵌套的json结构

  12. 12

    在pyspark中将rdd转换为没有模式的数据帧

  13. 13

    Pandas 数据帧上的 group by 期间的错误

  14. 14

    将列的字典从不同的数据帧转换为数据帧:pyspark

  15. 15

    如何在pyspark数据帧上使用forEachPartition?

  16. 16

    熊猫udf在PySpark数据帧行上循环

  17. 17

    在 pyspark 中的数据帧上应用 udf 后出错

  18. 18

    如何将日期时间的数据帧转换为仅时间?基本上删除Python Pandas中的date元素

  19. 19

    多行时间序列按属性在另一个数据帧中进行颜色编码(pandas / R上为plotly / ggplot2)

  20. 20

    如何将for循环的结果转换为pandas数据帧?

  21. 21

    将 Pandas 数据帧转换为字典并添加公共键值对

  22. 22

    numpy 数组到 Pandas 数据帧的转换 - ValueError

  23. 23

    使用循环使用 Pandas 转换多个数据帧

  24. 24

    Beckhoff TwinCat Scope CSV 格式转换为 Pandas 数据帧

  25. 25

    在Pandas中将一级混合标头数据帧转换为垂直数据帧

  26. 26

    如何在 Pyspark 中保持剩余数据帧相同的同时转换一列数据帧?

  27. 27

    如何过滤pyspark数据帧

  28. 28

    遍历pyspark中的数据帧

  29. 29

    在Pandas数据帧上并行化操作时速度较慢

热门标签

归档