小编pro*_*uga的帖子

解析使用Pandas从CSV加载的JSON字符串

我正在使用CSV文件,其中几个列有一个简单的json对象(几个键值对),而其他列是正常的.这是一个例子:

name,dob,stats
john smith,1/1/1980,"{""eye_color"": ""brown"", ""height"": 160, ""weight"": 76}"
dave jones,2/2/1981,"{""eye_color"": ""blue"", ""height"": 170, ""weight"": 85}"
bob roberts,3/3/1982,"{""eye_color"": ""green"", ""height"": 180, ""weight"": 94}"
Run Code Online (Sandbox Code Playgroud)

使用后df = pandas.read_csv('file.csv'),解析stats列并将其拆分为其他列的最有效方法是什么?

大约一个小时后,我唯一能想到的是:

import json
stdf = df['stats'].apply(json.loads)
stlst = list(stdf)
stjson = json.dumps(stlst)
df.join(pandas.read_json(stjson))
Run Code Online (Sandbox Code Playgroud)

这似乎我做错了,考虑到我需要定期在三个列上执行此操作,这是相当多的工作.

*编辑:所需的输出是下面的数据框对象.添加以下代码行以我的(糟糕的)方式:

df = df.join(pandas.read_json(stjson))
del(df['stats'])
In [14]: df

Out[14]:
          name       dob eye_color  height  weight
0   john smith  1/1/1980     brown     160      76
1   dave jones  2/2/1981      blue     170      85
2  bob roberts  3/3/1982     green     180      94
Run Code Online (Sandbox Code Playgroud)

python pandas

32
推荐指数
4
解决办法
3万
查看次数

使用Postgres和SQLAlchemy过滤数组列

我有一个带有int []列的简单表,我希望能够选择其中任何一个数组元素与我拥有的值匹配的行,并且我无法在不使用SQLAlchemy的情况下弄清楚如何执行此操作原始查询,我不想这样做.

这是表的模式("testuser"):

 Column  |          Type          |
---------+------------------------+
 id      | integer                |
 name    | character varying(250) |
 numbers | integer[]              |
Run Code Online (Sandbox Code Playgroud)

以下是样本数据的样子:

 id |  name   |    numbers
----+---------+---------------
  1 | David   | {25,33,42,55}
  2 | Salazar | {11,33,7,19}
  3 | Belinda | {32,6,20,23}
  4 | Casey   | {19,20,27,8}
  5 | Kathie  | {25,31,10,40}
  6 | Dianne  | {25,20,40,39}
  7 | Cortez  | {1,20,18,38}
Run Code Online (Sandbox Code Playgroud)

这是一个生成我想要的SQL语句; 我想在Python中完成这一切,而不是简单地编写原始查询(25仅用作示例).

scrape=# select * from testuser where 25 = ANY(numbers);
 id |  name  |    numbers
----+--------+--------------- …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy

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

如何下载文件并在clojure中从内存中解压缩?

我正在使用clj-http发出GET请求,响应是一个zip文件.此zip的内容始终是一个CSV文件.我想将CSV文件保存到磁盘,但我无法弄清楚如何.

如果我有磁盘上的文件,(fs/unzip filename destination)从Raynes/fs库工作得很好,但我无法弄清楚如何将clj-http的响应强制转换成可以读取的内容.如果可能的话,我想直接解压缩文件

我得到的最接近的(如果它甚至接近)让我进入BufferedInputStream,但我从那里迷路了.

(require '[clj-http.client :as client])
(require '[clojure.java.io :as io])

(->
  (client/get "http://localhost:8000/blah.zip" {:as :byte-array})
  (:body)
  (io/input-stream))
Run Code Online (Sandbox Code Playgroud)

clojure

7
推荐指数
2
解决办法
2018
查看次数

包装长字符串sublimetext python

是否有一些神奇的方法让SublimeText自动为我处理这样的一行?

print('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent dapibus mauris urna, in semper dolor semper eget. Proin condimentum est sed est elementum, eu pulvinar eros malesuada. Quisque malesuada sapien et quam convallis, et sodales risus blandit. Vestibulum auctor justo eu libero pellentesque tempor. Quisque faucibus augue eu fermentum auctor.')
Run Code Online (Sandbox Code Playgroud)

老实说,我这样做是无动于衷的:

print('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent dapibus'
      'mauris urna, in semper dolor semper eget. Proin condimentum est sed est'
      'elementum, eu pulvinar eros malesuada. Quisque …
Run Code Online (Sandbox Code Playgroud)

python sublimetext

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

如何使用Python/Pandas测量预测的准确性?

我使用了Elo和Glicko评级系统以及匹配结果来为玩家生成评级.在每场比赛之前,我可以根据各自的评分为每个玩家产生一个期望值(0到1之间的浮点数).我想测试这种期望的准确程度,原因有两个:

  • 比较差异评级系统
  • 调整用于计算评级的变量(例如Elo中的kfactor)

国际象棋有一些区别值得注意:

  • 可能的结果是胜利(我将其视为1.0),损失(0.0),偶尔(<5%)平局(每次0.5).每个单独的比赛都被评级,而不是国际象棋中的系列.
  • 球员的比赛较少 - 许多比赛少于10,少数比赛超过25,最多比赛为75

认为适当的功能是"相关",我尝试创建一个DataFrame,其中包含一列中的预测(0,1之间的浮点数)和另一列中的结果(1 | 0.5 | 0)并使用corr(),但基于输出,我不确定这是否正确.

如果我创建一个DataFrame,其中只包含匹配中第一个玩家的期望和结果(由于我的数据源,结果将始终为1.0或0.5,输入永远不会首先显示),corr()返回非常低:<0.05.但是,如果我创建一个系列,每个匹配包含两行,并且包含每个玩家的期望和结果(或者,或者随机选择要追加的玩家,那么结果将是0,0.5或1), corr()要高得多:~0.15到0.30.我不明白为什么这会产生影响,这让我想知道我是在滥用功能还是完全使用了错误的功能.

如果有帮助,这里有一些真实的(非随机的)样本数据:http://pastebin.com/eUzAdNij

python statistics python-3.x pandas

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

将事件的时间序列+持续时间重新采样到并发事件中

我有两列; 事件开始的时间和事件的持续时间.像这样:

time, duration
1:22:51,41
1:56:29,36
2:02:06,12
2:32:37,38
2:34:51,24
3:24:07,31
3:28:47,59
3:31:19,32
3:42:52,37
3:57:04,58
4:21:55,23
4:40:28,17
4:52:39,51
4:54:48,26
5:17:06,46
6:08:12,1
6:21:34,12
6:22:48,24
7:04:22,1
7:06:28,46
7:19:12,51
7:19:19,4
7:22:27,27
7:32:25,53
Run Code Online (Sandbox Code Playgroud)

我想创建一个折线图,显示全天发生的并发事件的数量.重命名时间start_time并添加一个计算的新列end_time很容易(假设这是下一步) - 我不太清楚我理解的是,之后我可以重新采样这些数据,以便我可以绘制相同的图表.

我想我想结束类似的东西(但是按分钟划分):

time, events
1:30:00,1
2:00:00,2
2:30:00,1
3:00:00,1
3:30:00,2
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

如何处理Redis跨多个模块的连接?

我正在构建一个使用 Redis 作为数据存储的应用程序。因此,我有许多与 Redis 交互的函数,通常作为一组 Redis 命令的包装器。

随着应用程序的增长超过了我最初的 .py 文件,我不知道如何处理跨多个模块的 Redis 连接。目前,我指向 Redis 连接的指针是在文件顶部声明的,每个函数都假设它存在,而不是将其传递给每个函数。如果我将这些函数分散到多个文件中,那么每个模块都会创建自己的 Redis 指针以供使用,并且应用程序的每个实例都会打开与 Redis 的多个连接。

我希望一个实例只使用同一个连接。

不想这样做:

import redis
class MyApp(object):
    def __init__(self):
        self.r = redis.Redis()
    (all my app functions that touch redis go here)
Run Code Online (Sandbox Code Playgroud)

我也不想将 Redis 指针作为参数传递到每个函数中。

是否有其他方法可以从不同模块获取函数来共享单个 Redis() 实例?

python redis

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

在Pandas中绘制具有非常重尾数据的直方图

我经常处理具有非常"长尾"的数据.我想绘制直方图以总结分布,但是当我尝试使用熊猫时,我最终得到一个条形图,其中有一个巨大的可见条和其他一切都看不见.

这是我正在使用的系列的一个例子.由于它很长,我使用了value_counts(),因此它适合这个页面.

In [10]: data.value_counts.sort_index()

Out[10]:
0          8012
25         3710
100       10794
200       11718
300        2489
500        7631
600          34
700         115
1000       3099
1200       1766
1600         63
2000       1538
2200         41
2500        208
2700       2138
5000        515
5500        201
8800         10
10000        10
10900       465
13000         9
16200        74
20000       518
21500        65
27000        64
53000        82
56000         1
106000       35
530000        3
Run Code Online (Sandbox Code Playgroud)

我猜这个答案涉及将不太常见的结果分类到较大的组中(53000,56000,106000和53000组成一组> 50000等),并且还改变y指数来代表事件的百分比而不是绝对数量.但是,我不明白我将如何自动执行此操作.

python matplotlib histogram pandas ipython-notebook

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