小编ℕʘʘ*_*ḆḽḘ的帖子

如何将json加载到pandas数据帧中?

我使用a REST API来获取json如下文件:

import urllib2
import pandas as pd
import numpy as np
import requests

request='myrequest'
data= requests.get(request)
json=data.json()
df=pd.DataFrame(json)
Run Code Online (Sandbox Code Playgroud)

而数据框看起来像

                                               items
0  {u'access': u'all', u'count': 501, u'time': 2014}
1  {u'access': u'all', u'count': 381, u'time': 2015}
Run Code Online (Sandbox Code Playgroud)

如何将这个单列(看起来像字典)转换为Pandas中的正确列?

编辑

原始的json数据看起来像这样

{
  "items": [
    {
      "access": "all",
      "count": 200,
      "time": 2015
    },
    {
      "access": "all",
      "count": 14,
      "time": 2015
    },
  ]
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

python rest json pandas

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

ggplot2:如何将直方图的条与x轴对齐?

考虑这个简单的例子

library(ggplot2)
dat <- data.frame(number = c(5, 10, 11 ,12,12,12,13,15,15))
ggplot(dat, aes(x = number)) + geom_histogram()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

看看这些条是如何与x轴奇怪对齐的?为什么栏位于左侧的5.0第一个栏位于10.0中心位置?我怎样才能控制它?例如,对标签右侧的条形图开始更有意义(对我而言).

谢谢!

r ggplot2

9
推荐指数
2
解决办法
8756
查看次数

如何有效地将大型数据帧拆分为许多镶木地板文件?

考虑以下数据框

import pandas as pd
import numpy as np
import pyarrow.parquet as pq
import pyarrow as pa

idx = pd.date_range('2017-01-01 12:00:00.000', '2017-03-01 12:00:00.000', freq = 'T')

dataframe = pd.DataFrame({'numeric_col' : np.random.rand(len(idx)),
                          'string_col' : pd.util.testing.rands_array(8,len(idx))},
                           index = idx)

dataframe
Out[30]: 
                     numeric_col string_col
2017-01-01 12:00:00       0.4069   wWw62tq6
2017-01-01 12:01:00       0.2050   SleB4f6K
2017-01-01 12:02:00       0.5180   cXBvEXdh
2017-01-01 12:03:00       0.3069   r9kYsJQC
2017-01-01 12:04:00       0.3571   F2JjUGgO
2017-01-01 12:05:00       0.3170   8FPC4Pgz
2017-01-01 12:06:00       0.9454   ybeNnZGV
2017-01-01 12:07:00       0.3353   zSLtYPWF
2017-01-01 12:08:00       0.8510   tDZJrdMM
2017-01-01 12:09:00       0.4948 …
Run Code Online (Sandbox Code Playgroud)

python pandas parquet pyarrow

9
推荐指数
1
解决办法
4474
查看次数

如何在rmarkdown中交叉参考表和图?

我使用以下模板

---
title: "Nice try buddy"
author: "SpaceMan"
date: "13 December 2057"
output:
  bookdown::pdf_document2
header-includes:
- \usepackage{booktabs}
- \usepackage{longtable}
- \usepackage{array}
- \usepackage{multirow}
- \usepackage[table]{xcolor}
- \usepackage{wrapfig}
- \usepackage{float}
- \usepackage{colortbl}
- \usepackage{pdflscape}
- \usepackage{tabu}
- \usepackage{threeparttable}
- \usepackage{threeparttablex}
- \usepackage[normalem]{ulem}
- \usepackage{makecell}  
---
---
references:
- id: fenner2012a
  title: One-click science marketing
  container-title: Nature Materials
  volume: 11
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Title

\begin{equation}
f\left(k\right)=\binom{n}{k}p^k\left(1-p\right)^{n-k} \label{eq:binom}
\end{equation}

You may refer to it using `\@ref(eq:binom)`, e.g., …
Run Code Online (Sandbox Code Playgroud)

r r-markdown bookdown kableextra kable

9
推荐指数
1
解决办法
1865
查看次数

在Pandas read_csv期间标记数据时出错.如何真正看到坏线?

我有一个大的csv,我加载如下

df=pd.read_csv('my_data.tsv',sep='\t',header=0, skiprows=[1,2,3])
Run Code Online (Sandbox Code Playgroud)

我在加载过程中遇到了几个错误.

  1. 首先,如果我没有指明warn_bad_lines=True,error_bad_lines=False我得到:

    标记数据时出错.C错误:预计在329867行的22个字段中,看到24个

  2. 其次,如果我使用上面的选项,我现在得到:

    CParserError:标记数据时出错.C错误:字符串中的EOF从第32357585行开始

问题是:我怎样才能看看这些不好的线条来理解发生了什么?是否有可能read_csv归还这些虚假的线?

我尝试了以下提示(当读取多个csv文件到HDF5时,Pandas ParserError EOF字符):

from pandas import parser

try:
  df=pd.read_csv('mydata.tsv',sep='\t',header=0, skiprows=[1,2,3])
except (parser.CParserError) as detail:
  print  detail
Run Code Online (Sandbox Code Playgroud)

但仍然得到

标记数据时出错.C错误:预计在329867行的22个字段中,看到24个

python csv pandas

8
推荐指数
1
解决办法
8811
查看次数

合并后是否有可用的_merge指示器?

有没有办法_merge在合并后获得等效的指标变量dplyr

类似于Pandas indicator = True选项的东西基本上告诉你合并是如何进行的(来自每个数据集的匹配数等).

这是一个例子 Pandas

import pandas as pd

df1 = pd.DataFrame({'key1' : ['a','b','c'], 'v1' : [1,2,3]})
df2 = pd.DataFrame({'key1' : ['a','b','d'], 'v2' : [4,5,6]})

match = df1.merge(df2, how = 'left', indicator = True)
Run Code Online (Sandbox Code Playgroud)

在这里,经过left join之间df1df2,你想立刻知道多少行df1找到了匹配中df2,有多少人没

match
Out[53]: 
  key1  v1   v2     _merge
0    a   1  4.0       both
1    b   2  5.0       both
2    c   3  NaN  left_only
Run Code Online (Sandbox Code Playgroud)

我可以将这个merge变量制成表格:

match._merge.value_counts()
Out[52]: …
Run Code Online (Sandbox Code Playgroud)

r dplyr

8
推荐指数
2
解决办法
1370
查看次数

如何将IPython控制台的输出保存到Spyder中的文件?

我的程序中有一个错误:(

问题是:

  • 我的 .py代码很长,需要很长时间才能运行
  • 我不知道错误在哪里

好消息是,我有很多print()在我py文件,所以我可能知道的bug生活。

坏消息是,我的错误让我的电脑死机,所以没有办法,我看的输出ipython控制台,看看哪里出了问题。

程序运行时如何将输出写入磁盘?这样重启后我仍然可以打开文件,以了解崩溃之前发生了什么?

这个问题与将stdout重定向到Python中的文件不同吗?,因为我需要

  • 连续写入文件
  • 在Spyder中使用的一些东西

非常感谢!

python spyder anaconda

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

Python/R:当并非所有节点都包含所有变量时,从XML生成数据帧?

请考虑以下XML示例

library(xml2)

myxml <- read_xml('
<data>
  <obs ID="a">
  <name> John </name>
  <hobby> tennis </hobby>
  <hobby> golf </hobby>
  <skill> python  </skill>
  </obs>
  <obs ID="b">
  <name> Robert </name>
  <skill> R </skill>
  </obs>
  </data>
')
Run Code Online (Sandbox Code Playgroud)

在这里,我想从这个XML中获取一个(R或Pandas)数据框,其中包含列namehobby.

但是,如您所见,存在对齐问题,因为hobby第二个节点中缺少对齐问题,John有两个爱好.

在R中,我知道如何一次提取一个特定值,例如使用xml2如下:

myxml%>% 
  xml_find_all("//name") %>% 
  xml_text()

myxml%>% 
  xml_find_all("//hobby") %>% 
  xml_text()
Run Code Online (Sandbox Code Playgroud)

但是如何在数据框中正确对齐此数据?也就是说,我如何获得如下的数据帧(注意我如何加入|John的两个爱好):

# A tibble: 2 × 3
    name           hobby            skill
   <chr>           <chr>            <chr>
1   John          tennis|golf       python
2 Robert            <NA>            R
Run Code Online (Sandbox Code Playgroud)

在R中,我更喜欢使用xml2和的解决方案dplyr …

python xml r pandas xml2

8
推荐指数
1
解决办法
1101
查看次数

spark:java.io.IOException:设备上没有剩余空间[再次!]

java.io.IOException: No space left on device在运行一个简单的查询后得到了这个sparklyr.我使用最后版本的Spark(2.1.1)和Sparklyr

df_new <-spark_read_parquet(sc, "/mypath/parquet_*", name = "df_new", memory = FALSE)

myquery <- df_new %>% group_by(text) %>% summarize(mycount = n()) %>% 
  arrange(desc(mycount)) %>% head(10)

#this FAILS
get_result <- collect(myquery)
Run Code Online (Sandbox Code Playgroud)

我确实设置了两个

  • spark.local.dir <- "/mypath/"
  • spark.worker.dir <- "/mypath/"

使用平常

config <- spark_config()

config$`spark.executor.memory` <- "100GB"
config$`spark.executor.cores` <- "3"
config$`spark.local.dir` <- "/mypath/"
config$`spark.worker.dir` <- "mypath/"
config$`spark.cores.max`<- "2000"
config$`spark.default.parallelism`<- "4"
config$`spark.total-executor-cores`<- "80"
config$`sparklyr.shell.driver-memory` <- "100G"
config$`sparklyr.shell.executor-memory` <- "100G"
config$`spark.yarn.executor.memoryOverhead` <- "100G"
config$`sparklyr.shell.num-executors` <- …
Run Code Online (Sandbox Code Playgroud)

r apache-spark pyspark sparklyr

8
推荐指数
2
解决办法
2846
查看次数

在tidyverse中按组滚动回归?

关于在R中滚动回归有很多问题,但在这里我特意寻找使用的东西dplyr,broom并且(如果需要的话)purrr.

这就是使这个问题与众不同的原因.我希望tidyverse保持一致.是否可以使用诸如purrr:map和之类的整洁工具进行适当的运行回归dplyr

请考虑这个简单的例子:

library(dplyr)
library(purrr)
library(broom)
library(zoo)
library(lubridate)

mydata = data_frame('group' = c('a','a', 'a','a','b', 'b', 'b', 'b'),
                     'y' = c(1,2,3,4,2,3,4,5),
                     'x' = c(2,4,6,8,6,9,12,15),
                     'date' = c(ymd('2016-06-01', '2016-06-02', '2016-06-03', '2016-06-04',
                                    '2016-06-03', '2016-06-04', '2016-06-05','2016-06-06')))

  group     y     x date      
  <chr> <dbl> <dbl> <date>    
1 a      1.00  2.00 2016-06-01
2 a      2.00  4.00 2016-06-02
3 a      3.00  6.00 2016-06-03
4 a      4.00  8.00 2016-06-04
5 b      2.00  6.00 2016-06-03
6 b      3.00 …
Run Code Online (Sandbox Code Playgroud)

r dplyr rolling-computation broom purrr

8
推荐指数
1
解决办法
928
查看次数