当使用seaborn热图时,有没有办法自动调整字体大小以使其完全适合方块内?例如:
sns.heatmap(corrmat, vmin=corrmat.values.min(), vmax=1, square=True, cmap="YlGnBu",
linewidths=0.1, annot=True, annot_kws={"size":8})
Run Code Online (Sandbox Code Playgroud)
这里的大小设置在"annot_kws"中.
我有以下数据帧:
index = range(14)
data = [1, 0, 0, 2, 0, 4, 6, 8, 0, 0, 0, 0, 2, 1]
df = pd.DataFrame(data=data, index=index, columns = ['A'])
Run Code Online (Sandbox Code Playgroud)
如何使用pandas使用之前的非零值填充零?是否有一个不仅仅是"NaN"的填充物?
输出应如下所示:
[1, 1, 1, 2, 2, 4, 6, 8, 8, 8, 8, 8, 2, 1]
Run Code Online (Sandbox Code Playgroud)
(这个问题在此之前被问过用一个非零值填充1d numpy数组的零值,但他只是要求一个numpy解决方案)
想要将excel电子表格(.xlsm格式,因为它有宏)中的特定范围的数据导入到pandas数据帧中.这样做是这样的:
data = pd.read_excel(filepath, header=0, skiprows=4, nrows= 20, parse_cols = "A:D")
Run Code Online (Sandbox Code Playgroud)
但似乎nrows仅适用于read_csv()?read_excel()的等价物是什么?
有没有直接的方法来计算pandas中数据帧列的平均值,但没有考虑零值作为值的数据?像.mean()函数中的参数一样?目前这样做是这样的:
x = df[df[A]!=0]
x.mean()
Run Code Online (Sandbox Code Playgroud) 在xlswriter中,一旦定义了格式,如何将它应用于范围而不是整列或整行?
例如:
perc_fmt = workbook.add_format({'num_format': '0.00%','align': 'center'})
worksheet.set_column('B:B', 10.00, perc_fmt)
Run Code Online (Sandbox Code Playgroud)
这会将它应用到整个"B"列,但是如何将"perc_fmt"应用于范围,例如,如果我这样做:
range2 = "B2:C15"
worksheet2.write(range2, perc_fmt)
Run Code Online (Sandbox Code Playgroud)
它说:
TypeError: Unsupported type <class 'xlsxwriter.format.Format'> in write()
Run Code Online (Sandbox Code Playgroud) 如果我们选择bootstrap = False,RandomForestClassifier()会做什么?
根据此链接中的定义
bootstrap:boolean,optional(default = True)构建树时是否使用bootstrap样本.
问这个因为我想对时间序列使用随机森林方法,所以训练一个大小为(tn)的滚动窗口并预测日期(t + k),并想知道如果我们选择True或是否会发生这种情况假:
1)如果Bootstrap = True,那么当训练样本可以是任何一天和任何数量的功能.因此,例如可以从具有随机选择的特征的每天(t-15),白天(t-19)和白天(t-35)获得样本,然后预测日期的输出(t + 1).
2)如果Bootstrap = False,它将使用所有样本和从日期(tn)到t的所有特征进行训练,那么它实际上将遵守日期顺序(意味着它将使用t-35,t-34,t -33 ......等到t-1).然后将预测日期的输出(t + 1).
如果这是Bootstrap的工作方式,我会倾向于使用Boostrap = False,好像不会有点奇怪(想想金融系列)只是忽略连续几天的回报并从第t-39天跳到t-19并且然后到第t-15天预测第t + 1天.我们会错过那些日子之间的所有信息.
那么...这就是Bootstrap的工作方式吗?
我目前正在使用带有Python 2.7.9-1的Anaconda软件包
昨天我通过Anaconda Launcher升级了Spyder-app,现在我的所有脚本都崩溃了.(问题页面https://github.com/spyder-ide/spyder/issues中已经报告了一些错误).我怎样才能降级到之前的Spyder版本同时修复了这些错误?
谢谢
加布里埃尔
我正在使用Pandas并使用XlsxWriter将数据导出到excel.其中一个数据列有浮点数,需要格式化为百分比,所以我这样做:
percent_fmt = workbook.add_format({'num_format': '0.00%'})
worksheet.set_column('E:E', percent_fmt)
Run Code Online (Sandbox Code Playgroud)
之后出现以下错误:
文件 "C:\ Program Files文件\蟒蛇\ LIB \站点包\ xlsxwriter\worksheet.py",线4688,在_write_col_info /浮动(max_digit_width)*256.0)/ 256.0
类型错误:"格式"和"INT":用于*不受支持的操作数类型
我在这做错了什么?
如何根据图表中没有的变量更改折线图的背景颜色?例如,如果我有以下数据帧:
import numpy as np
import pandas as pd
dates = pd.date_range('20000101', periods=800)
df = pd.DataFrame(index=dates)
df['A'] = np.cumsum(np.random.randn(800))
df['B'] = np.random.randint(-1,2,size=800)
Run Code Online (Sandbox Code Playgroud)
如果我做df.A的折线图,如何根据该时间点'B'列的值更改背景颜色?
例如,如果在该日期B = 1,则该日期的背景为绿色.
如果B = 0,则该日期的背景应为黄色.
如果B = -1那么背景那个日期应该是红色的.
添加我最初考虑使用axvline的解决方法,但@jakevdp回答正是因为不需要for循环,所以首先需要添加一个'i'列作为计数器,然后整个代码如下所示:
dates = pd.date_range('20000101', periods=800)
df = pd.DataFrame(index=dates)
df['A'] = np.cumsum(np.random.randn(800))
df['B'] = np.random.randint(-1,2,size=800)
df['i'] = range(1,801)
# getting the row where those values are true wit the 'i' value
zeros = df[df['B']== 0]['i']
pos_1 = df[df['B']==1]['i']
neg_1 = df[df['B']==-1]['i']
ax = df.A.plot()
for x in zeros:
ax.axvline(df.index[x], …Run Code Online (Sandbox Code Playgroud) 自2015年11月以来,情节是开源的,可用于python.https://plot.ly/javascript/open-source-announcement/
当试图离线做一些图时,这些工作在iPython Notebook(版本4.0.4)但是如果我尝试在Spyder(版本2.3.8)中运行它们,我只是得到以下输出:
<IPython.core.display.HTML object>
<IPython.core.display.HTML object>
Run Code Online (Sandbox Code Playgroud)
我的代码有问题,或者Spyder的iPython终端仍然不支持这个?
以下是示例代码(摘自https://www.reddit.com/r/IPython/comments/3tibc8/tip_on_how_to_run_plotly_examples_in_offline_mode/)
from plotly.offline import download_plotlyjs, init_notebook_mode, iplot
from plotly.graph_objs import *
init_notebook_mode()
trace0 = Scatter(
x=[1, 2, 3, 4],
y=[10, 11, 12, 13],
mode='markers',
marker=dict(
size=[40, 60, 80, 100],
)
)
data = [trace0]
layout = Layout(
showlegend=False,
height=600,
width=600,
)
fig = dict( data=data, layout=layout )
iplot(fig)
Run Code Online (Sandbox Code Playgroud) 我有以下DataFrame
A
0 2012-01-13 10:00:06
1 2012-01-13 11:09:04
2 2012-01-13 12:07:05
3 2012-01-13 13:03:04
4 2012-01-16 10:00:10
5 2012-01-16 11:09:04
6 2012-01-16 12:01:05
7 2012-01-16 13:09:04
8 2012-01-17 10:01:04
9 2012-01-17 11:05:06
10 2012-01-17 12:01:05
11 2012-01-17 13:04:04
Run Code Online (Sandbox Code Playgroud)
其中索引是0,1,..等
有没有办法根据当天转置数据?例如,新的DataFrame应如下所示:
A B C D
0 2012-01-13 10:00 2012-01-13 11:09 2012-01-13 12:07 2012-01-13 13:03
1 2012-01-16 10:00 2012-01-16 11:09 2012-01-16 12:01 2012-01-16 13:09
2 2012-01-17 10:01 2012-01-17 11:05 2012-01-17 12:01 2012-01-17 13:04
Run Code Online (Sandbox Code Playgroud) 我从我正在关注的在线课程中下载了一些数据.
解压缩后,它会生成一个名为home.gl的文件夹(该文件夹附带gl扩展名),在该文件夹中,它们是这些奇怪的扩展文件.在课程中他们使用graphlab(付费程序),但他们说也可以使用Pandas.
这是可以加载到DataFrame中的数据,它们实际上只是加载它:
sales = graphlab.SFrame('home_data.gl/')
Run Code Online (Sandbox Code Playgroud)
如何将这些数据加载到Python中,最好是pandas?
这些是他们的指示.
可以使用以下方法将数据写入特定单元格:
xlsworksheet.write('B5', 'Hello')
Run Code Online (Sandbox Code Playgroud)
但是如果你尝试编写一个完整的数据帧,df2,从单元格'B5'开始:
xlsworksheet.write('B5', df2)
TypeError: Unsupported type <class 'pandas.core.frame.DataFrame'> in write()
Run Code Online (Sandbox Code Playgroud)
从特定单元格开始编写整个数据帧的方法应该是什么?
我问这个的原因是因为我需要在excel中的同一张表中粘贴2个不同的pandas数据帧.
python ×12
pandas ×9
xlsxwriter ×3
matplotlib ×2
spyder ×2
anaconda ×1
plot ×1
plotly ×1
python-2.7 ×1
scikit-learn ×1
seaborn ×1