我正在使用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) 我有一个带有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) 我正在使用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) 是否有一些神奇的方法让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) 我使用了Elo和Glicko评级系统以及匹配结果来为玩家生成评级.在每场比赛之前,我可以根据各自的评分为每个玩家产生一个期望值(0到1之间的浮点数).我想测试这种期望的准确程度,原因有两个:
国际象棋有一些区别值得注意:
认为适当的功能是"相关",我尝试创建一个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
我有两列; 事件开始的时间和事件的持续时间.像这样:
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) 我正在构建一个使用 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() 实例?
我经常处理具有非常"长尾"的数据.我想绘制直方图以总结分布,但是当我尝试使用熊猫时,我最终得到一个条形图,其中有一个巨大的可见条和其他一切都看不见.
这是我正在使用的系列的一个例子.由于它很长,我使用了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 ×7
pandas ×4
matplotlib ×2
clojure ×1
histogram ×1
postgresql ×1
python-3.x ×1
redis ×1
sqlalchemy ×1
statistics ×1
sublimetext ×1