如何解决我可以将此数据框转换为折线图吗
有什么办法可以将这个数据帧放入一个折线图中,其中每个TypeLoc都有一条单独的线,在Y轴上测量值,并使用熊猫在python中沿x轴运行年份? 我尝试了很多方法,但是对python来说是很新的,所以一无所获。 我花了大约5个小时试图弄清楚,这似乎是问问的最佳地方。
TESTDATA = StringIO("""DateCode;Value;TypeLoc;Expend_or_Visit;
2014;186;Seaside - beach;Expenditure;
2019;1456;Small town;Expenditure;
2016;4916;All areas;Expenditure;
2018;5474;All areas;Expenditure;
2013;217;Seaside - beach;Expenditure;
2018;6;Seaside - other;Expenditure;
2018;1234;Small town;Expenditure;
2015;230;Seaside resort or town;Expenditure;
2016;302;Seaside resort or town;Expenditure;
2019;359;Seaside resort or town;Expenditure;
2017;458;Seaside resort or town;Expenditure;
2015;3922;All areas;Expenditure;
2014;5020;All areas;Expenditure;
2013;4647;All areas;Expenditure;
2016;1037;Small town;Expenditure;
2013;68;Seaside - other;Expenditure;
2013;1035;Small town;Expenditure;
2017;46;Seaside - beach;Expenditure;
2019;35;Seaside - other;Expenditure;
2015;914;Small town;Expenditure;
2016;32;Seaside - other;Expenditure;
2016;249;Seaside - beach;Expenditure;
2015;36;Seaside - other;Expenditure;
2014;128;Seaside - other;Expenditure;
2017;75;Seaside - other;Expenditure;
2015;81;Seaside - beach;Expenditure;
2019;237;Seaside - beach;Expenditure;
2018;151;Seaside - beach;Expenditure;
2019;457;Village;Expenditure;
2015;308;Village;Expenditure;
2019;3400;City/large town;Expenditure;
2018;3111;City/large town;Expenditure;
2017;1377;Small town;Expenditure;
2017;883;Village;Expenditure;
2014;1398;Small town;Expenditure;
2014;2873;City/large town;Expenditure;
2015;2254;City/large town;Expenditure;
2017;3379;City/large town;Expenditure;
2016;2630;City/large town;Expenditure;
2014;286;Seaside resort or town Expenditure;
2013;2850;City/large town;Expenditure;
2013;206;Seaside resort or town;Expenditure;
2017;778;Rural countryside;Expenditure;
2016;520;Rural countryside;Expenditure;
2017;5995;All areas;Expenditure;
2019;429;Rural countryside;Expenditure;
2015;402;Rural countryside;Expenditure;
2018;228;Seaside resort or town;Expenditure;
2018;502;Rural countryside;Expenditure;
2016;482;Village;Expenditure;
2014;510;Village;Expenditure;
2018;651;Village;Expenditure;
2013;483;Village;Expenditure;
2014;612;Rural countryside;Expenditure;
2019;5777;All areas;Expenditure;
2013;545;Rural countryside;Expenditure;
""")
链接到完整数据集https://docs.google.com/spreadsheets/d/1bRaq8I3JW6yZ0oucoVaFVH4ldd-HxAUZUBgeUk7KBgs/edit?usp=sharing
(我无法将其读入笔记本,因此需要手动输入所有内容。)
数据框1:
*试图回顾我的代码以获取我尝试过的内容- 这是我的最佳尝试,仍然遥遥无期:
df.set_index('TypeLoc',inplace=True)
df_expend = df_expend.transpose()
df_expend = df.query('Expend_or_Visit == "Expenditure"')
import matplotlib.pyplot as plt
df_expend.plot(kind='line')
plt.show()
解决方法
这是一种方法。您需要先旋转数据框,然后再绘制:
df = pd.read_csv(StringIO(TESTDATA),sep=";")
df = df[["DateCode","Value","TypeLoc"]].pivot(index = "DateCode",columns = "TypeLoc")
df = df.droplevel(0,axis=1)
for col in df.columns:
plt.plot(df.index,df[col],label =col)
plt.show()
样本数据有限的输出为:
要针对较大的数据集(链接中的数据集)运行此代码,请使用:
df = pd.read_csv("scot_stats - Sheet1.csv",header = 1)
df = df[df.Units == "million pounds (GBP)"]
df = df[["DateCode",label =col)
plt.show()
输出如下。您可以通过更改第二行的条件来创建用于访问的单独图表。
,import pandas as pd
import seaborn as sns
import io
TESTDATA = io.StringIO("""DateCode;Value;TypeLoc;Expend_or_Visit;
2014;186;Seaside - beach;Expenditure;
2019;1456;Small town;Expenditure;
2016;4916;All areas;Expenditure;
2018;5474;All areas;Expenditure;
2013;217;Seaside - beach;Expenditure;
2018;6;Seaside - other;Expenditure;
2018;1234;Small town;Expenditure;
""")
df = pd.read_csv(TESTDATA,sep =";")
sns.lineplot(x='DateCode',y='Value',hue= 'TypeLoc',data=df)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。