草庐IT

Pandas-Datareader

全部标签

python - 具有大型 .dta 文件的 Pandas read_stata()

我正在处理一个大约3.3GB的Stata.dta文件,所以它很大但不会太大。我对使用IPython很感兴趣,并尝试使用Pandas导入.dta文件,但发生了一些奇怪的事情。我的盒子有32GB的RAM,尝试加载.dta文件会导致所有RAM都被使用(约30分钟后)并且我的计算机会停止运行。这“感觉”不对,因为我能够使用外部包中的read.dta()在R中打开文件没问题,并且在Stata中使用该文件很好。我使用的代码是:%timemyfile=pd.read_stata(data_dir+'my_dta_file.dta')我在Enthought的Canopy程序中使用IPython。'%t

python - 在 Pandas 中,为什么 tz_convert 将使用的时区从 EST 更改为 LMT?

在下面的脚本中,为什么tz和tz2不同?importpandasimportpytztz=pytz.timezone('US/Eastern')t=pandas.Timestamp('2014-03-0308:05:39.216809')tz2=t.tz_localize(pytz.UTC).tz_convert(tz).tz在这种情况下,tz显示为:但是tz2显示为:pandas不应该尊重我传递给tz_convert的时区吗?(这可能是一个已知错误吗?)更新:这似乎更像是一个关于pytz的问题。仍然让我感到困惑(但可能有明确解释)的行为是为什么跟随不同?tztz.localize(t

python - python pandas 中的 R dcast 等价物

我正在尝试在python中执行与以下命令等效的操作:test也就是这个:convert_mevaluesage_colConvert121.7150223Convert258.3550633Convert360.4163944变成这样:valuesConvert2_33Convert1_23Convert3_4421.7150201058.3550610060.41639001我知道使用虚拟变量我可以获得列的值并转换为列的名称,但是有没有办法像R那样轻松地合并它们(组合)? 最佳答案 您可以使用crosstab为此功能:In[14]

python - 如何使用一行在 Pandas 中选择范围

我有一个Pandas数据框。我在另一个进程中从该数据框中选择了一行。在另一种方法中,我现在需要从该行所在的数据框中选择一个范围,如果有这么多行,则返回55行。下面是一些伪代码,希望对你有帮助:df=DataFramefromcsvrow=df[3454]index=row.indexstart=max(0,index-55)end=max(1,index)dfRange=df[start:end] 最佳答案 应该这样做integer_location=np.where(df.index==3454)[0][0]start=max(0

python - 将 pandas groupby 结果合并回 DataFrame

我有一个看起来像这样的DataFrame...idnvalue0ID1251ID1302ID2303ID250我想在此框架中添加另一列,即按“idn”分组的最大“值”我想要这样的结果。idnvaluemax_val0ID125301ID130302ID230503ID25050我可以像这样使用组来提取“值”的最大值...df[['idn','value']].groupby('idn')['value'].max()但是,我无法将该结果合并回原始DataFrame。获得预期结果的最佳方法是什么?谢谢 最佳答案 对groupby对象使

python - *有效地*使用 RPy(或其他方式)将数据帧从 Pandas 移动到 R

我在Pandas中有一个数据框,我想使用R函数对其进行一些统计。没问题!RPy可以轻松地将数据帧从Pandas发送到R:importpandasaspddf=pd.DataFrame(index=range(100000),columns=range(100))fromrpy2importrobjectsasroro.globalenv['df']=df如果我们在IPython中:%load_extrmagic%R-idf由于某些原因,ro.globalenv路由比rmagic路由稍慢,但没关系。重要的是:我最终将使用的数据帧约为100GB。这带来了一些问题:即使只有1GB的数据,传输

python - 如何强制 pandas read_csv 对所有浮点列使用 float32?

因为我不需要double我的机器内存有限,我想处理更大的数据集我需要将提取的数据(作为矩阵)传递给BLAS库,单精度的BLAS调用比double等效调用快2倍。请注意,并非原始csv文件中的所有列都具有浮点类型。我只需要将float32设置为浮点列的默认值。 最佳答案 尝试:importnumpyasnpimportpandasaspd#Sample100rowsofdatatodeterminedtypes.df_test=pd.read_csv(filename,nrows=100)float_cols=[cforcindf_t

python - 如何在 Pandas 中绘制日期的核密度图?

我有一个pandas数据框,其中每个观察值都有一个日期(作为datetime[64]格式的条目列)。这些日期分布在大约5年的时间段内。我想绘制所有观测日期的核密度图,年份标记在x轴上。我已经弄清楚如何创建相对于某个引用日期的时间增量,然后创建每个观察与引用日期之间的小时数/天数/年数的密度图:df['relativeDate'].astype('timedelta64[D]').plot(kind='kde')但这并不是我想要的:如果我转换为年增量,则x轴是正确的,但我失去了年内变化。但是,如果我采用更小的时间单位(例如小时或天),则x轴标签更难解释。在Pandas中实现此功能的最简单

python - pandas 的开发版本给出 importerror : C extension: 'hashtable' not built on python 3. 4 (anaconda)

尝试使用3.4进行开发构建(之前在2.7中进行过管理)。Python只是在osx10.10上安装了一个anaconda。我可以得到我:git克隆Pandas运行pythonsetup.pybuild_ext--inplace(没有错误)运行pythonsetup.pydevelop。但是当我尝试导入pandas时,我得到:importpandasaspdTraceback(mostrecentcalllast):File"",line1,inimportpandasaspdFile"/Users/Nick/github/pandas/pandas/__init__.py",line13

python - Pandas :难以理解合并的工作原理

我在合并方面做错了,我不明白它是什么。我已完成以下操作来估计一系列整数值的直方图:importpandasaspndimportnumpyasnpseries=pnd.Series(np.random.poisson(5,size=100))tmp={"series":series,"count":np.ones(len(series))}hist=pnd.DataFrame(tmp).groupby("series").sum()freq=(hist/hist.sum()).rename(columns={"count":"freq"})如果我打印hist和freq这就是我得到的:>