作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个以下形式的数据框:
import pandas as pd
df = pd.DataFrame({'t': [0, 1, 2, 3, 4, 5, 6],
'l': [["c", "d"], ["a", "b"], ["c", "d"], ["a", "b"], ["c", "d"], ["c", "d"], ["c", "d"]]})
列l
由列表组成,其中列表条目可以位于集合{a,b,c,d}
中。我想按以下方式绘制 l
的每个值 t
的内容,该方式基本上显示了四个可能值 {a,b,c, d}
一次 t
被激活
:
为了创建上面的图,我所做的是基于上面的 df
创建以下数据框(-1
未激活,否则为非负数) :
df_plot = pd.DataFrame({'t': [0, 1, 2, 3, 4,5,6],
'a': [-1, 0, -1, 0, -1,-1,-1],
'b': [-1, 1, -1, 1, -1,-1,-1],
'c': [2, -1, 2, -1, 2,2,2],
'd': [3, -1, 3, -1, 3,3,3]})
import numpy as np
ax = df_plot.plot(x="t", y=["a","b","c","d"],style='.', ylim=[-0.5,3.5], yticks=np.arange(0,3.1,1),legend=False)
labels = ["a","b","c","d"]
ax.set_yticklabels(labels)
从技术上讲,这给了我想要的东西,但是,我想有一种更简单、更专业的方法来绘制它 - 有没有更聪明的方法使用 Python 的库之一?
最佳答案
像这样怎么样:
# Reshape dataframe
dff = df.l.apply(pd.Series).merge(df, right_index = True, left_index = True).drop(["l"], axis = 1).melt(id_vars = ['t'], value_name = "l").drop("variable", axis = 1)
# Plot dataframe
import matplotlib.pyplot as plt
plt.scatter(dff['t'], dff['l'])
# plt.grid(True)
有关我编写的代码中发生的情况的更多详细信息可以单击此链接找到:https://mikulskibartosz.name/how-to-split-a-list-inside-a-dataframe-cell-into-rows-in-pandas-9849d8ff2401
注意:无论 l 列中的列表中有多少项,它都应该有效。
关于python - Pandas 数据框中的数字与字符串数据的散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54437315/
我是一名优秀的程序员,十分优秀!