在excel/python中以奇怪的格式绘制一些数据

gcxthw6b  于 2023-06-25  发布在  Python
关注(0)|答案(2)|浏览(92)

我有一些数据是这种格式的:
| 位置|二〇一二年|2013年|二○一四年|
| - -----|- -----|- -----|- -----|
| 1|一个|B|一个|
| 2| C类|一个|C类|
| 3| B| D级|E级|
有没有办法把这些数据画出来?它的设置方式是,表格有点像一个折线图,我知道这很奇怪,但这就是数据出来的方式。
如果不是Excel,那么可能是Python。
我不知道如何绘制这些数据。它已经是一种格式,好像它是一个图形,虽然,细胞就像一个点的数据线图。

envsm3lx

envsm3lx1#

您可以使用pandasmatplotlib来旋转 Dataframe 并绘制图形:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

# Read your data
# df = pd.read_excel('data.xlsx')
data = {'Position': [1, 2, 3],
        '2012': ['A', 'C', 'B'],
        '2013': ['B', 'A', 'D'],
        '2014': ['A', 'C', 'E']}
df = pd.DataFrame(data)

# Reshape your table
piv = (df.melt('Position', var_name='Year', value_name='ID')
         .pivot(index='Year', columns='ID', values='Position'))

# Plot data
ax = piv.plot(xlabel='Year', ylabel='Position', title='Rank by year')
ax.yaxis.set_major_locator(ticker.MultipleLocator())
ax.invert_yaxis()
plt.show()

输出:

旋转的 Dataframe :

>>> piv
ID      A    B    C    D    E
Year                         
2012  1.0  3.0  2.0  NaN  NaN
2013  2.0  1.0  NaN  3.0  NaN
2014  1.0  NaN  2.0  NaN  3.0

注意:你可能会对Excel做同样的事情。

mnemlml8

mnemlml82#

好吧,似乎没有 * 值 * 可供绘制,所以您可能仅限于绘制事物的 * 顺序 *(位置)。
例如,2012年的绘图信息将简单地指定顺序A, C, B,而不进行值比较。
然而,您已经在2012年的专栏中拥有了这种级别的信息,所以我不确定图形图会增加什么。
你 * 绝对 * 不需要一个图表来显示每年的位置1(根据你的评论之一),因为这些信息很容易通过查看表格的单行来识别。图表的目的是使数据更加明显,而不仅仅是提供一个漂亮的图片,尽管管理顾问群体的倾向:-)
如果你确实想显示相关的位置,有两种可能性,给每个位置分配一个“假”值,计算为像4 - position这样的值,它会将位置{1, 2, 3}转换为值{3, 2, 1},因此给第一个位置一个更高的值。
首先,一系列饼图,每年一个,显示基于这些假值的项目。这会给予你类似的东西(抱歉渲染得很粗糙,我在Word中很快就完成了):

第二,你可以将它呈现为一个分类的条形图,类似于(需要添加2013年和其他年份的数据):

相关问题