我有一个问题试图让我的日期刻度在matplotlib中旋转.下面是一个小样本程序.如果我尝试在末尾旋转刻度线,则刻度线不会旋转.如果我尝试旋转注释'崩溃'下显示的刻度,则matplot lib崩溃.
只有当x值是日期时才会发生这种情况.如果我用调用中dates
的变量替换变量,则调用在内部工作正常.t
avail_plot
xticks(rotation=70)
avail_plot
有任何想法吗?
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
def avail_plot(ax, x, y, label, lcolor):
ax.plot(x,y,'b')
ax.set_ylabel(label, rotation='horizontal', color=lcolor)
ax.get_yaxis().set_ticks([])
#crashes
#plt.xticks(rotation=70)
ax2 = ax.twinx()
ax2.plot(x, [1 for a in y], 'b')
ax2.get_yaxis().set_ticks([])
ax2.set_ylabel('testing')
f, axs = plt.subplots(2, sharex=True, sharey=True)
t = np.arange(0.01, 5, 1)
s1 = np.exp(t)
start = dt.datetime.now()
dates=[]
for val in t:
next_val = start + dt.timedelta(0,val)
dates.append(next_val)
start = next_val
avail_plot(axs[0], dates, …
Run Code Online (Sandbox Code Playgroud) 我正在使用matplotlib以hh:mm:ss.ms格式绘制数据作为时间的函数,其中ms是毫秒.但是,我没有看到图中的毫秒数.是否可以添加它们?
dates = matplotlib.dates.datestr2num(x_values) # convert string dates to numbers
plt.plot_date(dates, y_values) # doesn't show milliseconds
Run Code Online (Sandbox Code Playgroud) 我有一个包使用pandas面板来生成MultiIndex pandas DataFrames.但是,每当我使用pandas.Panel时,我都会得到以下DeprecationError:
DeprecationWarning:Panel已弃用,将在以后的版本中删除.表示这些类型的三维数据的推荐方法是通过Panel.to_frame()方法在DataFrame上使用MultiIndex.或者,您可以使用xarray包http://xarray.pydata.org/en/stable/.Pandas提供了
.to_xarray()
一种帮助自动执行此转换的方法.
但是,我无法理解这里的第一个建议实际上是为了创建MultiIndex DataFrames而推荐的.如果要删除Panel,我将如何使用Panel.to_frame?
澄清:我不是在问什么是弃用,或者如何将我的Panel转换为DataFrames.我要问的是,如果我在库中使用pandas.Panel然后使用pandas.Panel.to_frame从3D ndarrays创建MultiIndex DataFrames,并且不推荐使用Panels,那么制作这些DataFrames的最佳选择是什么使用Panel API?
例如,如果我正在执行以下操作,将X作为具有形状(N,J,K)的ndarray:
p = pd.Panel(X, items=item_names, major_axis=names0, minor_axis=names1)
df = p.to_frame()
Run Code Online (Sandbox Code Playgroud)
对于DataFrame构建来说,这显然不再是一个可行的面向未来的选项,尽管这是该问题中推荐的方法.
我正在使用YAML作为计算机和人类可编辑和可读的模拟器输入格式.对于人类可读性,输入的某些部分主要适合于阻止样式,而流动样式更适合其他部分.
PyYAML的默认设置是在嵌套地图或序列的任何地方使用块样式,在其他任何地方使用流样式.*default_flow_style*允许选择all-flow-style或all-block-style.
但我想输出更多的表格文件
bonds:
- { strength: 2.0 }
- ...
tiles:
- { color: red, edges: [1, 0, 0, 1], stoic: 0.1}
- ...
args:
block: 2
Gse: 9.4
Run Code Online (Sandbox Code Playgroud)
可以看出,这并不是贯穿整个样式的一致模式,而是根据文件的部分而改变.本质上,我希望能够指定某些块样式序列中的所有值都是流式样.有没有办法对转储进行那种精细级别的控制?能够以特定顺序转储顶级映射而不需要该顺序(例如,omap)对于可读性而言将是好的.
我刚开始尝试通过scikits提供一个很好的bootstrapping包:https: //github.com/cgevans/scikits-bootstrap
但是我在尝试从线性回归估计相关系数的置信区间时遇到了问题.返回的置信区间完全在原始统计量的范围之外.
这是代码:
import numpy as np
from scipy import stats
import bootstrap as boot
np.random.seed(0)
x = np.arange(10)
y = 10 + 1.5*x + 2*np.random.randn(10)
r0 = stats.linregress(x, y)[2]
def my_function(y):
return stats.linregress(x, y)[2]
ci = boot.ci(y, statfunction=my_function, alpha=0.05, n_samples=1000, method='pi')
Run Code Online (Sandbox Code Playgroud)
这产生ci = [ - 0.605,0.644]的结果,但原始统计量为r0 = 0.894.
我在R中试过这个并且似乎在那里工作得很好:ci横跨r0如预期的那样.
请帮忙!
我有一个 dtype=object 数组,其中值要么是 Python 列表,要么是np.nan
.
我想用np.nan
[None] (不是 None)替换值。
对于纯 Python 列表,我已经可以使用 来完成此操作[ x if (x is not np.nan) else [None] for x in s ]
,并且将数组转换为列表对于我的目的来说很好,但出于好奇,我想知道如何使用 numpy 数组来完成此操作。困难在于,当使用索引时,numpy 尝试将任何列表解释为值列表,而不是我想要分配的实际值。
例如,如果我想用 替换这些值2
,那很容易(正常的 np、pd 导入;顺便说一句, np.isnan 在这种情况下不起作用,这是选择 float NaN 来表示 pandas 中通用缺失值的弱点,所以我使用 pd.isnull,因为这是针对 pandas 内部的问题):
In [53]: s
Out[53]:
array([['asdf', 'asdf'], ['asdf'], nan, ['asdf', 'asdf', 'asdf'],
['asdf', 'asdf', 'asdf']], dtype=object)
In [55]: s[pd.isnull(s)] = 2
In [56]: s
Out[56]:
array([['asdf', 'asdf'], ['asdf'], 2, ['asdf', 'asdf', …
Run Code Online (Sandbox Code Playgroud) def draw_piecharts(df, variables, n_rows, n_cols):
df[variables].value_counts.plot(kind='pie', layout=(n_rows,n_cols), subplots=True)
plt.show()
def main():
util.draw_piecharts(df, [ 'TARGET', 'BanruptcyInd'], 1,2)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的函数无法计算,因为数据框没有attribute value_counts()
,而value_counts是我知道如何获取饼图中的分布的唯一方法。以下是绘制的变量的示例:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 1
13 0
14 0
15 0
16 0
17 1
18 0
19 0
20 0
21 1
22 0
23 0
24 1
25 0
26 1
27 …
Run Code Online (Sandbox Code Playgroud)