我试图获取数据帧的单个列和其余数字列之间的相关性,但我陷入困境。
我正在尝试这样做:
corr = IM['imdb_score'].corr(IM)
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
操作数无法与形状一起广播
我认为这是因为我试图找到向量(我的imdb_score列)与多列数据帧之间的相关性。
如何解决这个问题?
我有一个包含大约200个观测值的数据集,我想将其绘制为热图.每个观察都有一个与之关联的字符串,我想显示它.我的问题是我无法读取这些标签,因为它们相互重叠.因此,我的问题是,是否可以某种方式将热图的单元格大小设置为字体大小yticklabel或是否有任何其他解决方法.
在下面的示例中,我使用随机数据进行说明:
import seaborn as sns
import numpy as np
data = np.random.rand(200, 10)
ax = sns.heatmap(data)
for item in ax.get_yticklabels():
item.set_rotation(0)
Run Code Online (Sandbox Code Playgroud)
这给了我:
有没有办法让这些yticklabels可读?在理想的情况下,我会有一个选项,允许我将单元格的高度设置为的字体大小yticklabels.那可能吗?
编辑:
正如评论中所提到的,一种可能性是增加数字的大小.我试过如下:
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(200, 10)
fig, ax = plt.subplots()
fig.set_size_inches(38.5, 10.5)
ax2 = sns.heatmap(data, ax=ax)
for item in ax2.get_yticklabels():
item.set_rotation(0)
Run Code Online (Sandbox Code Playgroud)
这给了我相同的输出.我正确使用它吗?
这是我的数据帧:
jan f m a m j \
2000 -7.894737 22.387006 22.077922 14.5455 15.8038 -3.33333
2001 -3.578947 11.958763 28.741093 5.05415 74.7151 11.2426
2002 -24.439661 -2.570483 1.810242 8.56044 84.5474 -26.9753
2003 14.410453 -10.106570 8.179654 -11.6469 -15.0022 -13.9757
2004 -3.978623 -13.280310 2.558639 -1.13076 12.7156 -4.47235
2005 2.018146 1.385053 9.461930 14.1947 -10.4865 -11.1553
2006 -6.528617 -5.506220 -2.054323 1.39073 7.74041 -0.328937
2007 -1.634891 8.923088 4.951521 -1.33334 3.82215 7.69231
2008 20.539609 0.132377 -3.117323 6.53806 9.99998 16.1356
2009 -3.979917 -9.342541 -23.233634 -26.5963 -27.0396 -4.39528
2010 6.141145 …Run Code Online (Sandbox Code Playgroud) 我在pandas中有一个方形相关矩阵,我试图用最有效的方法来返回值(总是一个浮点数-1 <= x <= 1)高于某个阈值的所有值.
该pandas.DataFrame.filter方法请求列的列表或一个正则表达式,但我总是想传递中的所有列.是否有一个最佳实践呢?
我试图在数据框上运行我认为应该是简单的相关函数的函数,但是它在我认为不应该的地方返回NaN。
码:
# setup
import pandas as pd
import io
csv = io.StringIO(u'''
id date num
A 2018-08-01 99
A 2018-08-02 50
A 2018-08-03 100
A 2018-08-04 100
A 2018-08-05 100
B 2018-07-31 500
B 2018-08-01 100
B 2018-08-02 100
B 2018-08-03 0
B 2018-08-05 100
B 2018-08-06 500
B 2018-08-07 500
B 2018-08-08 100
C 2018-08-01 100
C 2018-08-02 50
C 2018-08-03 100
C 2018-08-06 300
''')
df = pd.read_csv(csv, sep = '\t')
# Format manipulation
df = df[df['num'] …Run Code Online (Sandbox Code Playgroud) python ×5
pandas ×4
correlation ×2
heatmap ×2
matplotlib ×2
seaborn ×2
axis-labels ×1
dataframe ×1
statistics ×1