如何使用pyspark绘制时间序列折线图

时间:2020-04-18 16:37:11

标签: python pyspark time-series linechart

我有两列的大数据集,并且我将spy与pyspark模块一起使用来分析数据集。我尝试使用“日期”列和“计数”列绘制折线图。但日期栏包含4年的详细信息,但顺序不一(按日),日期混合。所以首先,我想重新安排日期,直到现在。而此日期列的数据类型为字符串。我能知道要绘制此时间序列折线图吗,如果这是我如何将此字符串类型的日期值更改为日期类型值,则该日期列必须转换为“日期类型”?

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

使用Spark 2.4.3,您可以像这样转换字符串日期:

# A tibble: 327 x 4
# Groups:   country [3]
   country curr_date  status since     
   <fct>   <date>      <dbl> <date>    
 1 Italy   2020-01-01      0 2020-01-01
 2 Italy   2020-01-02      0 2020-01-01
 3 Italy   2020-01-03      0 2020-01-01
 4 Italy   2020-01-04      0 2020-01-01
 5 Italy   2020-01-05      0 2020-01-01
 6 Italy   2020-01-06      0 2020-01-01
 7 Italy   2020-01-07      0 2020-01-01
 8 Italy   2020-01-08      0 2020-01-01
 9 Italy   2020-01-09      0 2020-01-01
10 Italy   2020-01-10      0 2020-01-01
# … with 317 more rows

这些是结果:

import pyspark.sql.functions as sf

df = sparksession.createDataFrame(
    [("8 October 2018", 4407), ("17 September 2017", 13326)],
    ["date", "count"],
)
df.show()

df.select(
    sf.to_date("date", "d MMMMM yyyy").alias("new_date"), "date", "count"
).orderBy("new_date").show()

PS .:对于 Spark 3.0.0 ,字符串格式已更改。日期转换应使用字符串+-----------------+-----+ | date|count| +-----------------+-----+ | 8 October 2018| 4407| |17 September 2017|13326| +-----------------+-----+ +----------+-----------------+-----+ | new_date| date|count| +----------+-----------------+-----+ |2017-09-17|17 September 2017|13326| |2018-10-08| 8 October 2018| 4407| +----------+-----------------+-----+ (少用"d MMMM yyyy"),因为它已记录在here中。

图表

要绘制折线图,​​可以使用Pandas和matplotlib:

M