我有以下数据框:
df1_Relax_Pulse_Melted.head()
Task Pulse Time Pulse Measure
0 Language PRE_RELAX_PULSE 90.0
1 Language PRE_RELAX_PULSE 94.0
2 Language PRE_RELAX_PULSE 52.0
3 Language PRE_RELAX_PULSE 70.0
4 Language PRE_RELAX_PULSE 84.0
Run Code Online (Sandbox Code Playgroud)
当我尝试绘制此数据的条形图时,我得到以下信息:
ax = sns.barplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用线图时,我得到以下信息:
ax = sns.lineplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted)
Run Code Online (Sandbox Code Playgroud)
从图中可以看出,x 轴标签的顺序与条形图的顺序不同。是否可以更改线图中 x 轴的顺序?我尝试在 sns.lineplot 中使用“order”函数,如下所示:
ax = sns.lineplot(x="Pulse Time", y="Pulse Measure", hue="Task", data=df1_Relax_Pulse_Melted, order='PRE_RELAX_PULSE','30S_RELAX_PULSE','POST_RELAX_PULSE')
Run Code Online (Sandbox Code Playgroud)
但是,这会产生错误。
``AttributeError: 'Line2D' 对象没有属性 'order'
生成数据帧以实现可复制性:
df = pd.DataFrame(np.random.randn(50, 1000), columns=list('ABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDEDABCDABCDED'))
Run Code Online (Sandbox Code Playgroud)
检查每个变量的分布是否正常(注意:这需要很长时间才能运行)
# Set the column names
columns= df.columns
# Loop over all columns
fig, axs = plt.subplots(len(df.columns), figsize=(5, 25))
for n, col in enumerate(df.columns):
df[col].hist(ax=axs[n])
Run Code Online (Sandbox Code Playgroud)
结果会生成难以辨认的直方图,并且需要很长时间才能运行。
时间长度还可以,但是我很好奇是否有人建议生成清晰的直方图(不必花哨),可以对整个数据框进行快速检查以确保分布的正态性。
我有以下数据框
data = {'Name':['Tom', 'nick', 'krish', 'jack'], 'Age':[20, 21, 19, 18], 'Height':[23, 43, 123, 12], 'Hair_Width':[21, 11, 23, 14]}
df = pd.DataFrame(data)
df
Name Age Height Hair_Width
0 Tom 20 23 21
1 nick 21 43 11
2 krish 19 123 23
3 jack 18 12 14
Run Code Online (Sandbox Code Playgroud)
我对此数据帧执行了合并操作,如下所示:
pd.melt(df, id_vars=['Name'], value_vars=['Age', 'Height'])
df
Name variable value
0 Tom Age 20
1 nick Age 21
2 krish Age 19
3 jack Age 18
4 Tom Height 23
5 nick Height 43 …Run Code Online (Sandbox Code Playgroud) 我有以下数据框,组合成一个列表:
df = pd.DataFrame({'numbers': [1, 2, 3], 'colors': ['red', 'white', 'blue']})
df1 = pd.DataFrame({'numbers': [7, 44, 93], 'colors': ['red', 'white', 'blue']})
df_list = [df,df1]
Run Code Online (Sandbox Code Playgroud)
我想使用 for 循环来迭代它们并打印每个数字。为此,我尝试了:
for num in df_list.numbers.unique():
val = locals()[num]
print(val)
Run Code Online (Sandbox Code Playgroud)
但得到一个错误:
AttributeError: 'list' object has no attribute 'numbers'
Run Code Online (Sandbox Code Playgroud)
我也尝试过,更简单:
for num in df_list.numbers.unique():
print(num)
Run Code Online (Sandbox Code Playgroud)
但得到一个错误:
AttributeError: 'list' object has no attribute 'numbers'
Run Code Online (Sandbox Code Playgroud)
类似的问题也被提出,但没有得到令人满意的答复。