小编Nil*_*dat的帖子

pandas数据帧的最大大小

我正在尝试使用pandas read_csvread_stata函数读取一个有点大的数据集,但我一直在使用Memory Errors.数据帧的最大大小是多少?我的理解是,只要数据适合内存,数据帧就应该没问题,这对我来说应该不是问题.还有什么可能导致内存错误?

对于上下文,我试图阅读2007年消费者财务调查,包括ASCII格式(使用read_csv)和Stata格式(使用read_stata).该文件大约为200MB作为dta,大约1.2GB作为ASCII,并且在Stata中打开它告诉我,有2200个观察/行有5,800个变量/列.

python pandas

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

使用字符串访问data.table列

对于一个问题的道歉,可能很明显我通常在Python/pandas中工作,但我坚持这一点.如何data.table使用字符串选择列?

dt$"string"
dt$as.name("string")
dt$get("string")
Run Code Online (Sandbox Code Playgroud)

我确信这很简单,但我没有得到它.任何帮助是极大的赞赏!


--------------已加入加入----------------------

在下面的一些有用的评论和提示之后,我想我已经缩小了问题并且有一个可重复的例子.考虑:

dt = data.table(ID = c("a","a","a","b","b","b"), col1=rnorm(6), col2=rnorm(6)*100)
Run Code Online (Sandbox Code Playgroud)

并假设我们要将值分配col2col1.正如我在下面学到的,这个data.table语法很dt[,col1:=col2]简洁.当参数中的一个(或两个)变量j是字符串时,问题就开始了.我找到了以下内容:

dt[, "col1":=col2] 按预期工作

dt[, "col1":="col2"]按预期失败(尝试将字符分配给col2双向量col1

dt[, "col1":=get("col2")] 按预期工作

dt[, get("col1")]col1按预期返回

但是:dt[, get("col1"):=col2]或任何其他任务失败.

一些背景:这样做的原因是,我在构建一个循环的字符串,以访问所有命名列的数量较多colname_colnumber了,也就是我环路colnamecolnumber对再接入列paste0(colname,colnumber).

string indexing r data.table

9
推荐指数
3
解决办法
8251
查看次数

什么`.Z`在SAS中意味着什么?

对这样一个完全无知的问题抱歉,但我不知道任何SAS,只需知道一行代码的作用,所以我希望有人可以提供帮助.我有一个变量数组的循环,以及一个基于比较的if子句.Z,但这个变量是无处定义的,所以我猜这是某种SAS语法技巧.这是循环:

ARRAY PTYPE{*} X4216 X4316 X4416 X4816 X4916 X5016;

DO I=1 TO DIM(PTYPE);
    IF (PTYPE{I}<=.Z) THEN PUT &ID= PTYPE{I}=;
END;
Run Code Online (Sandbox Code Playgroud)

所以在第一次迭代时,循环会检查值X4216是否小于.Z,然后......?ID是数据集中的另一个变量,但我不知道在if子句的右侧发生了什么.我简要地查阅了SAS文档,以确定&符号是指宏,但我对SAS的了解仅限于了解正在发生的事情.

任何人都可以开导我吗?

sas

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

outreg2 tex表中有三个反斜杠?

我在outreg2使用Stata中使用的用户编写的包时遇到了麻烦.当我使用该tex(frag)选项构建输出时,结果表在每行的末尾有三个反斜杠而不是仅两个,导致每行的"错位对齐字符"错误.关于我做错了什么或如何解决这个问题的任何想法?

(first regression specification)
outreg2 d.lntau_sh d.lntau_sf using Table_1.tex, nocons replace
(second regression second regression specification)
outreg2 d.lntau_ht d.lntau_th using Table_1.tex, tex(frag) se coefastr symb(***,**,*) rdec(3) bdec(3) r2 nocons append
Run Code Online (Sandbox Code Playgroud)

latex stata

6
推荐指数
2
解决办法
3383
查看次数

numpy 日期时间和 pandas 日期时间

我对 numpy 和 pandas 日期对象之间的互操作感到困惑(或者通常只是 numpy 的 datetime64)。

我试图使用 numpy 的内置功能来计算工作日,如下所示:

np.busday_count("2016-03-01", "2016-03-31", holidays=[np.datetime64("28/03/2016")])
Run Code Online (Sandbox Code Playgroud)

然而,numpy 显然无法处理反转的日期格式:

ValueError: Error parsing datetime string "28/03/2016" at position 2
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我想我应该使用 pandas to_datetime,它可以。然而:

np.busday_count("2016-03-01", "2016-03-31", holidays=[np.datetime64(pd.to_datetime("28/03/2016"))])

ValueError: Cannot safely convert provided holidays input into an array of dates
Run Code Online (Sandbox Code Playgroud)

搜索了一下,这似乎是由于 to_datetime 和 np.datetime64 的链接产生一个datetime64[us]对象而引起的,而该对象显然是该busday_count函数无法接受的(这是预期的行为还是错误?)。因此,我的下一个尝试是:

np.busday_count("2016-03-01", "2016-03-31", holidays=[np.datetime64(pd.Timestamp("28"), "D")])
Run Code Online (Sandbox Code Playgroud)

但:

TypeError: Cannot cast datetime.datetime object from metadata [us] to [D] according to the rule 'same_kind'
Run Code Online (Sandbox Code Playgroud)

这就是我的问题 - 为什么所有这些日期时间格式之间存在如此多的不兼容性?我怎样才能绕过它们?

python datetime numpy

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

Pandas:合并后数据帧太长

假设我必须使用一个比另一个长的 DataFrames,我想加入特定的列,如下例所示:

A = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [6, 7, 8, 9, 10], 'col3': [11, 12, 13, 14, 15]})

B = pd.DataFrame({'col1': [1, 3, 5], 'col2': [16, 17, 18], 'col4': [19, 20, 21]})
Run Code Online (Sandbox Code Playgroud)

然后我加入他们:

pd.merge(A, B, on='col1', how='outer')
Run Code Online (Sandbox Code Playgroud)

并按预期获得:

       col1     col2_x  col3    col2_y  col4
0       1       6       11      16      19
1       2       7       12      NaN     NaN
2       3       8       13      17      20
3       4       9       14      NaN     NaN
4       5       10      15      18      21

5 rows × …
Run Code Online (Sandbox Code Playgroud)

python merge pandas

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

在pandas中使用multiindex设置值

关于SO的问题已经有几个问题,尤其是这个问题,但是没有一个答案似乎对我有用,并且很多文档链接(特别是关于lexsorting)都被打破了,所以我会问另一个.

我正在尝试做某事(看似)非常简单.请考虑以下MultiIndexed Dataframe:

import pandas as pd; import random
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
      ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]

tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.concat([pd.Series(np.random.randn(8), index=index), pd.Series(np.random.randn(8), index=index)], axis=1)
Run Code Online (Sandbox Code Playgroud)

现在我想将列中的所有值设置0为某个值(比方说np.NaN),以便在类别中进行观察one.我失败了:

df.loc(axis=0)[:, "one"][0] = 1 # setting with copy warning
Run Code Online (Sandbox Code Playgroud)

df.loc(axis=0)[:, "one", 0] = 1
Run Code Online (Sandbox Code Playgroud)

这或者产生关于键的长度超过索引长度的警告,或者关于缺少lexsorting到足够深度的警告.

这样做的正确方法是什么?

python multi-index pandas

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

治疗NaN's

我无法理解pandas和/或numpy如何处理NaN值.我正在提取大熊猫数据帧的子集以计算t-stats,例如我想知道x1值为A的组的x2平均值与x1值为B的组的平均值是否存在显着差异(抱歉没有让这个成为一个有效的例子,但我不知道如何重新创建在我的数据框中弹出的NaN值,使用read_csv读取原始数据,其中csv表示缺少的值NA):

import numpy as np
import pandas as pd
import scipy.stats as st
A = data[data['x1']=='A']['x2']
B = data[data['x1']=='B'].x2
A

2      3
3      1
5      2
6      3
10     3
12     2
15     2
16     0
21     0
24     1
25     1
28   NaN
31     0
32     3
...
677     0
681   NaN
682     3
683     1
686     2
Name: praxiserf, Length: 335, dtype: float64
Run Code Online (Sandbox Code Playgroud)

也就是说,我有两个pandas.core.series.Series对象,然后我想对它进行t检验.但是,使用

st.ttest_ind(A, B)
Run Code Online (Sandbox Code Playgroud)

收益:

(array(nan), nan)
Run Code Online (Sandbox Code Playgroud)

我认为这与ttest_ind接受数组作为输入的事实有关,当将系列转换为数组时,我的NaN值似乎存在问题.如果我尝试计算原始系列的方法,我得到:

A.mean(), B.mean() …
Run Code Online (Sandbox Code Playgroud)

python numpy nan

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

加速数据帧循环

我在一个pandas数据帧上运行了两个不同但非常相似的循环,我想知道是否有某种groupby操作可以让我通过避免循环来加快速度.

for x in df.var1:
    df[df.var1==x, 'var2'] = np.max(df[df.var1==x, 'var2'])
Run Code Online (Sandbox Code Playgroud)

也就是说,假设存在多个具有相同值的行var1,我想将var2所有这些行的值设置为在所有这些行上var2获得的最大值.

我觉得我应该能够在没有for循环的情况下做到这一点,但由于某种原因我无法弄清楚如何.想法?

python dataframe pandas

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

安装多个软件包时出现 Julia“检测到软件包无法满足的要求”错误

我正在使用 Julia v1.5.2,当我尝试安装 EvalMetrics 时出现以下错误:

\n

Pkg.add("EvalMetrics")

\n

我什至尝试使用 Pkg 管理器而不是使用 import Pkg,但它似乎也没有什么区别。

\n
Unsatisfiable requirements detected for package StatsBase [2913bbd2]:\n StatsBase [2913bbd2] log:\n \xe2\x94\x9c\xe2\x94\x80possible versions are: 0.24.0-0.33.19 or uninstalled\n \xe2\x94\x9c\xe2\x94\x80restricted to versions * by an explicit requirement, leaving only versions 0.24.0-0.33.19\n \xe2\x94\x9c\xe2\x94\x80restricted by compatibility requirements with JuliaDB [a93385a2] to versions: 0.24.0-0.32.2\n \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80JuliaDB [a93385a2] log:\n \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80possible versions are: 0.9.0-0.13.1 or uninstalled\n \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80restricted to versions * by an explicit requirement, leaving only versions 0.9.0-0.13.1\n \xe2\x94\x94\xe2\x94\x80restricted by compatibility requirements …
Run Code Online (Sandbox Code Playgroud)

julia ijulia-notebook

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

Seaborn despine有两个y尺度(twinx)

如何seaborn.despine避免将我的两个音阶放在我的情节的左侧?到目前为止我提出的最好的是:

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

sns.set_style("white")

fig, ax = plt.subplots()
ax.plot(np.random.rand(10))
ax2 =ax.twinx()
ax2.plot(100*np.random.rand(10))
sns.despine(ax=ax, right=True, left=True)
sns.despine(ax=ax2, left=True, right=False)
Run Code Online (Sandbox Code Playgroud)

但是任何其他组合都不会使y轴脱垂或将右轴放在左侧.

输出如上:(所需输出没有刺,只有左右数字)

在此输入图像描述

python matplotlib seaborn

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

如何在 Julia 中创建二维字符串数组

如何在 Julia 中创建 2D(9 x 9)字符串数组并对其进行初始化

global AStrings = String(9,9) 
Run Code Online (Sandbox Code Playgroud)

然后分配一个 float64 , float64 给它

AStrings[i,j] =  string(c[i]) * "," * string(c2[i]) 
Run Code Online (Sandbox Code Playgroud)

注意c[i]c2[i]是两个浮点数

arrays matrix julia

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