数据准备中的Python与Stata

数据准备中的Python与Stata,python,pandas,stata,Python,Pandas,Stata,我知道这是不太可能的,但我不明白为什么Python在简单的操作后输出一个稍微不同的数据集,我认为这与我在Stata中所做的是相同的。 那么,斯塔塔: use "filename", clear drop if varname < 1500 sum PYTHON(原始数据:df=pd.read\u stata(“filename.dta”)):varname 计数:610 平均值:1339.481934 标准:17.274755 最小值:1304.000000 25%:132

我知道这是不太可能的,但我不明白为什么Python在简单的操作后输出一个稍微不同的数据集,我认为这与我在Stata中所做的是相同的。 那么,斯塔塔:

use "filename", clear  
drop if varname < 1500  
sum  

PYTHON(原始数据:
df=pd.read\u stata(“filename.dta”)
:varname
计数:610
平均值:1339.481934
标准:17.274755
最小值:1304.000000
25%:1326.000000
50%:1341.000000
75%:1353.000000
最高:1368.000000

df.isnull().sum()

varname 10953
因此,在Stata和Python中,原始数据中的丢失数量是相同的,但是在删除之后,我得到了两个不同的数据集


PYTHON,在
df=df[df.varname之后,我猜您误解了
df[]
子句中布尔运算的行为

在pandas中,
df[statement]
中的语句必须是
True
,这样才能选择它


在您的示例中,
df=df[df.varname我猜您误解了
df[]
子句中布尔运算的行为

在pandas中,
df[statement]
中的语句必须是
True
,这样才能选择它


在您的示例中,
df=df[df.varname老实说,这似乎不太可能。您能否提供
varname
的类型和描述性统计信息,包括读取数据后和删除数据后的类型和描述性统计信息?我猜空值的处理方式是不同的。您能否在删除任何观察值之前包含计数,以验证正在读取的数据是否正确相同?另外,您是否可以明确检查缺少的值?df=df[df.varname>1500]…?@coffeinjunky,看起来数据集是相同的,但在我使用df=df[df.varname<1500]后,它们会发生变化不到1500@tianlinhe,是的,在执行此命令之后,我得到了一个与stata不同的数据集,因此可能这是一个不正确的行。老实说,这似乎不太可能。您能否提供
varname
的类型和描述性统计信息,无论是在读取数据之后还是在删除数据之后?我猜是空值E的处理方式不同。在删除任何观察值之前,您是否可以包括计数,以验证正在读取的数据是否相同?此外,您是否可以明确检查缺少的值?df=df[df.varname>1500]…?@coffeinjunky,看起来数据集是相同的,但在我使用df=df[df.varname<1500]后,它们会发生变化不到1500@tianlinhe,是的,在这个命令之后,我得到了一个与stata不同的数据集,所以这可能是一个错误的行。非常感谢!我解决了我的问题,但没有理解为什么一件事有效,另一件事无效。现在感谢你的解释,我明白了!我也很高兴帮助你!你愿意吗接受它作为答案还是投票?@tianlinhe,没问题:)太感谢你了!我明白了我的问题,但不明白为什么一件事有效,另一件事无效。现在感谢你的解释,我明白了!我也很乐意帮助你!那么你会接受它作为答案还是投票吗?@tianlinhe,没问题:)
import pandas as pd  
df = pd.read_stata("filename.dta", convert_missing = False)  
df = df[df.varname<1500]  
df.describe()