我正在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)

我正在绘制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)


我正在绘制两个带有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)

我有两个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)

我有一些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) 我有一个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) 我想用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相同的数据?
我有一个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)
这些不起作用: …
我正在学习在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无响应的情况下在窗口中获取绘图?
我想删除在保存的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的屏幕截图。

我有两个相同形状的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