小编TiT*_*iTo的帖子

线性模型面板OLS:带星星的回归输出

我正在使用 linearmodels 包来估计 Panel-OLS。例如,请参见:

import numpy as np
from statsmodels.datasets import grunfeld
data = grunfeld.load_pandas().data
data.year = data.year.astype(np.int64)
# MultiIndex, entity - time
data = data.set_index(['firm','year'])
from linearmodels import PanelOLS
mod = PanelOLS(data.invest, data[['value','capital']], entity_effect=True)
res = mod.fit(cov_type='clustered', cluster_entity=True)
Run Code Online (Sandbox Code Playgroud)

我想在 .tex 文件中导出回归的输出。是否有一种方便的方法可以在没有 CI 之类的其他信息的情况下使用置信度来格式化输出?该问题已在此处的标准 OLS 上下文中提出,但这不适用于“PanelEffectsResults”对象,因为我收到以下错误:

'PanelEffectsResults' object has no attribute 'bse'
Run Code Online (Sandbox Code Playgroud)

提前致谢。

python regression python-3.x panel-data linearmodels

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

小数点/千位分隔符的 pd.read_feather 问题和浮点数的舍入问题

我想使用 .ftr 文件来快速分析数百个表。不幸的是,我在十进制和千位分隔符方面遇到了一些问题,类似于那个帖子,只是 read_feather 不允许decimal=',', thousands='.'选项。我尝试了以下方法:

df['numberofx'] = (
    df['numberofx']
    .apply(lambda x: x.str.replace(".","", regex=True)
                      .str.replace(",",".", regex=True))
Run Code Online (Sandbox Code Playgroud)

导致

AttributeError: 'str' object has no attribute 'str'
Run Code Online (Sandbox Code Playgroud)

当我把它改成

df['numberofx'] = (
    df['numberofx']
    .apply(lambda x: x.replace(".","").replace(",","."))
Run Code Online (Sandbox Code Playgroud)

我在结果中收到一些奇怪的(四舍五入)错误,例如 22359999999999998 而不是 2236 对于某些高于 1k 的数字。所有低于 1k 的都是真实结果的 10 倍,这可能是因为删除了“.”。的浮点数并创建该数字的 int。

df['numberofx'] = df['numberofx'].str.replace('.', '', regex=True)
Run Code Online (Sandbox Code Playgroud)

也会导致结果中出现一些奇怪的行为,因为有些数字在 10^12 中,而其他数字则应保持在 10^3 中。

下面是我如何从多个 Excel 文件创建我的 .ftr 文件。我知道我可以简单地从 Excel 文件创建数据帧,但这会大大减慢我的日常计算速度。

我该如何解决这个问题?


编辑:这个问题似乎来自于将 excel 文件作为非美国标准的关于十进制和千位分隔符的 df 读取,而不是将其保存为羽毛。使用pd.read_excel(f, encoding='utf-8', decimal=',', thousands='.')读取 excel …

python decimal-point rounding pandas feather

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

如何从 BeautifulSoup ( Python ) 中的表中获取第一个子表行

这是代码和示例结果,我只希望表格的第一列忽略其余部分。Stackoverflow 上有类似的问题,但没有帮助。

<tr>
<td>JOHNSON</td>
<td> 2,014,470 </td>
<td>0.81</td>
<td>2</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我只想要 JOHNSON,因为它是第一个孩子。我的python代码是:

import requests
  from bs4 import BeautifulSoup
 def find_raw():
      url = 'http://names.mongabay.com/most_common_surnames.htm'
      r = requests.get(url)
      html = r.content
      soup = BeautifulSoup(html)
      for n in soup.find_all('tr'):
          print n.text
  
  find_raw()
Run Code Online (Sandbox Code Playgroud)

我得到的:

SMITH 2,501,922 1.0061
JOHNSON 2,014,470 0.812
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup python-requests

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

在 PySpark 中计算 groupby 之后的 sum 和 countDistinct

我有一个 PySpark 数据框,想要对几列进行分组,然后计算一些列的总和并计算另一列的不同值。由于countDistinct不是内置聚合函数,我无法使用像我在这里尝试的那样的简单表达式:

sum_cols = ['a', 'b']
count_cols = ['id']
exprs1 = {x: "sum" for x in sum_cols}
exprs2 = {x: "countDistinct" for x in count_cols}
exprs = {**exprs1, **exprs2}

df_aggregated = df.groupby('month','product').agg(exprs)
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个答案中的方法,但是当我仅针对聚合列尝试时,exprs2 = [countDistinct(x) for x in count_cols]我收到了一条错误消息 。AssertionError: all exprs should be Column

如何将总和和不同计数合并到一个聚合中?我知道,我可以对sum列执行一次,然后对列执行一次countDistinct,然后加入两个数据框,但应该有一种解决方案可以一步完成此操作......

python group-by distinct aggregate-functions pyspark

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

检查是否在 PySpark 数据帧的组中找到某个值

假设我有以下 df

df = spark.createDataFrame([
  ("a", "apple"),
  ("a", "pear"),
  ("b", "pear"),
  ("c", "carrot"),
  ("c", "apple"),
], ["id", "fruit"])

+---+-------+
| id|  fruit|
+---+-------+
|  a|  apple|
|  a|   pear|
|  b|   pear|
|  c| carrot|
|  c|  apple| 
+---+-------+
Run Code Online (Sandbox Code Playgroud)

我现在想为每个在水果列中TRUE至少有一列的 id创建一个布尔标志。"pear"fruit

所需的输出如下所示:

+---+-------+------+
| id|  fruit|  flag|
+---+-------+------+
|  a|  apple|  True|
|  a|   pear|  True|
|  b|   pear|  True|
|  c| carrot| False|
|  c|  apple| False|
+---+-------+------+
Run Code Online (Sandbox Code Playgroud)

对于 pandas,我在groupby().transform() 这里找到了一个解决方案,但我不明白如何将其转换为 PySpark。

python group-by dataframe pyspark

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