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