小编Art*_*örk的帖子

更改Seaborn热图中刻度标签的旋转

我正在Seaborn中绘制热图.问题是我的情节中有太多的正方形,所以x和y标签彼此太靠近才有用.所以我正在创建一个xticks和yticks列表来使用.但是,将此列表传递给函数会旋转图中的标签.让seaborn自动掉落一些蜱虫真的很不错,但是我希望能够让yticks直立起来.

import pandas as pd
import numpy as np
import seaborn as sns

data = pd.DataFrame(np.random.normal(size=40*40).reshape(40,40))

yticks = data.index
keptticks = yticks[::int(len(yticks)/10)]
yticks = ['' for y in yticks]
yticks[::int(len(yticks)/10)] = keptticks

xticks = data.columns
keptticks = xticks[::int(len(xticks)/10)]
xticks = ['' for y in xticks]
xticks[::int(len(xticks)/10)] = keptticks

sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python heatmap seaborn

45
推荐指数
2
解决办法
4万
查看次数

如何使用Matplotlib对齐两个y轴刻度的网格线?

我正在绘制y轴上具有不同单位的两个数据集.有没有办法让刻度线和网格线在两个y轴上对齐?

第一张图片显示了我得到的内容,第二张图片显示了我想要获得的内容.

这是我用来绘制的代码:

import seaborn as sns
import numpy as np
import pandas as pd

np.random.seed(0)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(pd.Series(np.random.uniform(0, 1, size=10)))
ax2 = ax1.twinx()
ax2.plot(pd.Series(np.random.uniform(10, 20, size=10)), color='r')
Run Code Online (Sandbox Code Playgroud)

不需要的行为示例

想要行为的例子

python plot matplotlib seaborn

35
推荐指数
4
解决办法
2万
查看次数

使用带有secondary_y的Seaborn + Pandas绘图时如何摆脱网格线

我正在绘制两个带有seaborn导入的Pandas的数据系列.理想情况下,我希望在左右y轴之间共享水平网格线,但我觉得这很难做到.

作为妥协,我想一起删除网格线.但是,以下代码会生成辅助y轴的水平网格线.

import pandas as pd
import numpy as np
import seaborn as sns


data = pd.DataFrame(np.cumsum(np.random.normal(size=(100,2)),axis=0),columns=['A','B'])
data.plot(secondary_y=['B'],grid=False)
Run Code Online (Sandbox Code Playgroud)

我想摆脱的网格线

python plot matplotlib pandas seaborn

26
推荐指数
5
解决办法
4万
查看次数

图例仅在用熊猫绘图时显示一个标签

我有两个Pandas DataFrames,我希望在单个图中绘制.我正在使用IPython笔记本.

我希望图例显示两个DataFrame的标签,但到目前为止我只能显示后者.此外,任何关于如何以更合理的方式编写代码的建议将不胜感激.我是这一切的新手,并不真正理解面向对象的绘图.

%pylab inline
import pandas as pd

#creating data

prng = pd.period_range('1/1/2011', '1/1/2012', freq='M')
var=pd.DataFrame(randn(len(prng)),index=prng,columns=['total'])
shares=pd.DataFrame(randn(len(prng)),index=index,columns=['average'])

#plotting

ax=var.total.plot(label='Variance')
ax=shares.average.plot(secondary_y=True,label='Average Age')
ax.left_ax.set_ylabel('Variance of log wages')
ax.right_ax.set_ylabel('Average age')
plt.legend(loc='upper center')
plt.title('Wage Variance and Mean Age')
plt.show()
Run Code Online (Sandbox Code Playgroud)

传奇缺少其中一个标签

python plot matplotlib pandas

22
推荐指数
2
解决办法
2万
查看次数

如何删除pandas数据帧的最后一列数据

我有一些cvs数据在每行的末尾有一个空列.我想将其从导入中删除,或者在导入后删除它.我的cvs数据有不同数量的列.我尝试过使用df.tail(),但还没有设法选择最后一列.

employment=pd.read_csv('./data/spanish/employment1976-1987thousands.csv',index_col=0,header=[7,8],encoding='latin-1')
Run Code Online (Sandbox Code Playgroud)

数据:

4.- Resultados provinciales
Encuesta de Población Activa. Principales Resultados

Activos por provincia y grupo de edad (4).
Unidades:miles de personas


,Álava,,,,Albacete,,,,Alicante,,,,Almería,,,,Asturias,,,,Ávila,,,,Badajoz,,,,Balears (Illes),,,,Barcelona,,,,Burgos,,,,Cáceres,,,,Cádiz,,,,Cantabria,,,,Castellón de la Plana,,,,Ciudad Real,,,,Córdoba,,,,Coruña (A),,,,Cuenca,,,,Girona,,,,Granada,,,,Guadalajara,,,,Guipúzcoa,,,,Huelva,,,,Huesca,,,,Jaén,,,,León,,,,Lleida,,,,Lugo,,,,Madrid,,,,Málaga,,,,Murcia,,,,Navarra,,,,Orense,,,,Palencia,,,,Palmas (Las),,,,Pontevedra,,,,Rioja (La),,,,Salamanca,,,,Santa Cruz de Tenerife,,,,Segovia,,,,Sevilla,,,,Soria,,,,Tarragona,,,,Teruel,,,,Toledo,,,,Valencia,,,,Valladolid,,,,Vizcaya,,,,Zamora,,,,Zaragoza,,,,Ceuta y Melilla,,,,
,de 16 a 19 años,de 20 a 24 años,de 25 a 54 años,de 55 y más años,de 16 a 19 años,de 20 a 24 años,de 25 a 54 años,de 55 y más años,de 16 a 19 años,de 20 a 24 años,de …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

19
推荐指数
5
解决办法
4万
查看次数

洗一个numpy阵列

我有一个2-d numpy数组,我想要洗牌.最好的方法是将它重塑为1-d,再次洗牌和重塑为2-d还是可以在不重塑的情况下进行洗牌?

只使用random.shuffle不会产生预期的结果,numpy.random.shuffle只会洗牌:

import random
import numpy as np
a=np.arange(9).reshape((3,3))
random.shuffle(a)
print a

[[0 1 2]
 [3 4 5]
 [3 4 5]]

a=np.arange(9).reshape((3,3))
np.random.shuffle(a)
print a

[[6 7 8]
 [3 4 5]
 [0 1 2]]
Run Code Online (Sandbox Code Playgroud)

python random numpy shuffle

10
推荐指数
3
解决办法
9867
查看次数

通过索引和列名称数组切片Pandas数据帧

我想用pandas数据帧复制numpy数组的行为.我想传递一个索引和列名数组,并获取在相应的索引和列名中找到的对象列表.

import pandas as pd
import numpy as np
Run Code Online (Sandbox Code Playgroud)

在numpy:

array=np.array(range(9)).reshape([3,3])
print array
print array[[0,1],[0,1]]

[[0 1 2]
 [3 4 5]
 [6 7 8]]

[0 4]
Run Code Online (Sandbox Code Playgroud)

在熊猫:

prng = pd.period_range('1/1/2011', '1/1/2013', freq='A')
df=pd.DataFrame(array,index=prng)
print df

      0  1  2
2011  0  1  2
2012  3  4  5
2013  6  7  8

df[[2011,2012],[0,1]]
Run Code Online (Sandbox Code Playgroud)

预期产量:

[0 4]
Run Code Online (Sandbox Code Playgroud)

我应该如何切割这个数据帧以使其返回与numpy相同的数据?

python numpy slice dataframe pandas

6
推荐指数
1
解决办法
5200
查看次数

按索引级别为Pandas Multiindex DataFrame分配值

我有一个Pandas multiindex数据帧,我需要为一个系列中的一个列赋值.该系列与数据帧索引的第一级共享其索引.

import pandas as pd
import numpy as np
idx0 = np.array(['bar', 'bar', 'bar', 'baz', 'foo', 'foo'])
idx1 = np.array(['one', 'two', 'three', 'one', 'one', 'two'])
df = pd.DataFrame(index = [idx0, idx1], columns = ['A', 'B'])
s = pd.Series([True, False, True],index = np.unique(idx0))
print df
print s
Run Code Online (Sandbox Code Playgroud)

出:

             A    B
bar one    NaN  NaN
    two    NaN  NaN
    three  NaN  NaN
baz one    NaN  NaN
foo one    NaN  NaN
    two    NaN  NaN

bar     True
baz    False
foo     True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

这些不起作用: …

python multi-index pandas

6
推荐指数
1
解决办法
1230
查看次数

如何在Jupyter Notebook中用Rpy2绘制(内联)?

我正在学习在Jupyter笔记本中使用rpy2。我在密谋上有麻烦。当我使用rpy2 文档中的示例进行交互工作时:

from rpy2.interactive import process_revents
from rpy2.robjects.packages import importr
from rpy2.robjects.vectors import IntVector
process_revents.start()

graphics = importr("graphics")
graphics.barplot(IntVector((1,3,2,5,4)), ylab="Value")
Run Code Online (Sandbox Code Playgroud)

Jupyter使用该图打开一个新窗口。窗口“标题”显示为:R图形:设备2(活动)(无响应)。我的Jupyter内核处于活动状态。当我尝试使用绘图关闭窗口时,Windows声称python.exe没有响应,如果我强制关闭,则jupyter内核会重新启动。

第一:如何使rpy2图内联?第二:如果无法进行内联绘图,如何在不使python.exe无响应的情况下在窗口中获取绘图?

python plot r rpy2 jupyter

6
推荐指数
1
解决办法
1138
查看次数

当另存为pdf时,删除在seaborn热图中分隔细胞的线

我想删除在保存的pdf中分隔单元格的行。我尝试设置linewidth = 0.0,但行仍显示。

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

data = pd.DataFrame(np.arange(10*10).reshape(10,10))
fig, ax = plt.subplots()
ax = sns.heatmap(data,linewidths=0.0)
fig.savefig('stackoverflow_lines.pdf')
Run Code Online (Sandbox Code Playgroud)

该图像是生成的pdf的屏幕截图。

在此处输入图片说明

python matplotlib heatmap seaborn

5
推荐指数
1
解决办法
3102
查看次数

numpy数组的元素逻辑比较

我有两个相同形状的numpy数组.数组中的元素是[0,N]的随机整数.我需要检查数组中相同位置的哪些元素(如果有)是相等的.

我需要的输出是相同元素的位置.

模拟代码:

A=np.array([0,1])
B=np.array([1,0])
C=np.array([1,1])
np.any_elemenwise(A,B)
np.any_elemenwise(A,C)
np.any_elemenwise(A,A)
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[]
[1]
[0,1]
Run Code Online (Sandbox Code Playgroud)

我可以逐个编写一个遍历所有元素的循环,但我认为可以更快地实现所需的输出.

python arrays numpy boolean-operations elementwise-operations

1
推荐指数
1
解决办法
5827
查看次数