如何使用pyspark绘制时间序列折线图
How to draw time series line chart using pyspark
我有一个包含两列的大数据集,我使用带有 pyspark 模块的 spark 来分析数据集。我尝试使用 "date" 列和 "count" 列绘制折线图。但日期列包含 4 年的详细信息,但这些信息不按顺序(根据一天一天),日期是混合的。所以首先我想重新安排日期,从过去到现在。而这个日期列,数据类型是字符串。我能知道要绘制这个时间序列折线图吗,这个日期列应该必须转换成 "date type" 如果这是我如何将这个字符串类型的日期值更改为日期类型的值?
使用 Spark 2.4.3,您可以像这样转换字符串日期:
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()
结果如下:
+-----------------+-----+
| 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|
+----------+-----------------+-----+
PS.: 对于 Spark 3.0.0,字符串格式已更改。日期转换应使用字符串 "d MMMM yyyy"
(少一个 M
),因为它记录在 here.
图表
要绘制折线图,您可以使用 Pandas 和 matplotlib:
pdf = (
df.select(
sf.to_date("date", "d MMMMM yyyy").alias("new_date"),
"date",
"count",
)
.orderBy("new_date")
.toPandas()
)
pdf.plot.line(x="new_date", y="count")
我有一个包含两列的大数据集,我使用带有 pyspark 模块的 spark 来分析数据集。我尝试使用 "date" 列和 "count" 列绘制折线图。但日期列包含 4 年的详细信息,但这些信息不按顺序(根据一天一天),日期是混合的。所以首先我想重新安排日期,从过去到现在。而这个日期列,数据类型是字符串。我能知道要绘制这个时间序列折线图吗,这个日期列应该必须转换成 "date type" 如果这是我如何将这个字符串类型的日期值更改为日期类型的值?
使用 Spark 2.4.3,您可以像这样转换字符串日期:
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()
结果如下:
+-----------------+-----+
| 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|
+----------+-----------------+-----+
PS.: 对于 Spark 3.0.0,字符串格式已更改。日期转换应使用字符串 "d MMMM yyyy"
(少一个 M
),因为它记录在 here.
图表
要绘制折线图,您可以使用 Pandas 和 matplotlib:
pdf = (
df.select(
sf.to_date("date", "d MMMMM yyyy").alias("new_date"),
"date",
"count",
)
.orderBy("new_date")
.toPandas()
)
pdf.plot.line(x="new_date", y="count")