我知道如果我的.dat文件已经正确装箱数据,如何在gnuplot中创建直方图(只需使用"带框").有没有办法获取数字列表并让gnuplot根据用户提供的范围和bin大小提供直方图?
有没有办法在MySQL中指定bin大小?现在,我正在尝试以下SQL查询:
select total, count(total) from faults GROUP BY total;
Run Code Online (Sandbox Code Playgroud)
正在生成的数据足够好,但行数太多.我需要的是一种将数据分组到预定义箱中的方法.我可以从脚本语言中做到这一点,但有没有办法在SQL中直接执行?
例:
+-------+--------------+
| total | count(total) |
+-------+--------------+
| 30 | 1 |
| 31 | 2 |
| 33 | 1 |
| 34 | 3 |
| 35 | 2 |
| 36 | 6 |
| 37 | 3 |
| 38 | 2 |
| 41 | 1 |
| 42 | 5 |
| 43 | 1 |
| 44 | 7 |
| 45 …Run Code Online (Sandbox Code Playgroud) 假设我有一个数据框,其国家/地区如下:
cc | temp
US | 37.0
CA | 12.0
US | 35.0
AU | 20.0
Run Code Online (Sandbox Code Playgroud)
我知道有一个pd.get_dummies函数可以将这些国家/地区转换为"单热编码".但是,我希望将它们转换为索引,以便我得到它cc_index = [1,2,1,3].
我假设有一种比使用get_dummies和numpy where子句更快的方法,如下所示:
[np.where(x) for x in df.cc.get_dummies().values]
使用'因子'在R中这样做有点容易,所以我希望大熊猫有类似的东西.
有没有办法做一些类似于cut()在dplyr表中装箱数值的函数?我正在研究一个大的postgres表,并且当前可以在一开始就在sql中编写case语句,或者输出非聚合数据并应用cut().两者都有明显的缺点...案例陈述不是特别优雅,并且通过collect()根本没有效率地提取大量记录.
使用python我创建了包含相似度值的以下数据框:
cosinFcolor cosinEdge cosinTexture histoFcolor histoEdge histoTexture jaccard
1 0.770 0.489 0.388 0.57500000 0.5845137 0.3920000 0.00000000
2 0.067 0.496 0.912 0.13865546 0.6147309 0.6984127 0.00000000
3 0.514 0.426 0.692 0.36440678 0.4787535 0.5198413 0.05882353
4 0.102 0.430 0.739 0.11297071 0.5288008 0.5436508 0.00000000
5 0.560 0.735 0.554 0.48148148 0.8168083 0.4603175 0.00000000
6 0.029 0.302 0.558 0.08547009 0.3928234 0.4603175 0.00000000
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个R脚本来生成另一个反映二进制数据的数据框,但如果该值大于0.5,则应用我的条件条件
伪代码:
if (cosinFcolor > 0.5 & cosinFcolor <= 0.6)
bin = 1
if (cosinFcolor > 0.6 & cosinFcolor <= 0.7)
bin = 2 …Run Code Online (Sandbox Code Playgroud) 我试图在python中重新实现一个IDL函数:
http://star.pst.qub.ac.uk/idl/REBIN.html
通过求平均值减去2d阵列的整数因子.
例如:
>>> a=np.arange(24).reshape((4,6))
>>> a
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
Run Code Online (Sandbox Code Playgroud)
我想通过取相关样本的平均值将其调整为(2,3),预期输出为:
>>> b = rebin(a, (2, 3))
>>> b
array([[ 3.5, 5.5, 7.5],
[ 15.5, 17.5, 19.5]])
Run Code Online (Sandbox Code Playgroud)
即b[0,0] = np.mean(a[:2,:2]), b[0,1] = np.mean(a[:2,2:4])等等.
我相信我应该重塑为4维数组,然后在正确的切片上取平均值,但无法弄清楚算法.你有什么提示吗?
我有一个数据框,想要按一系列值过滤或分组,然后获取每个bin中的值计数.
目前,我这样做:
x = 5
y = 17
z = 33
filter_values = [x, y, z]
filtered_a = df[df.filtercol <= x]
a_count = filtered_a.filtercol.count()
filtered_b = df[df.filtercol > x]
filtered_b = filtered_b[filtered_b <= y]
b_count = filtered_b.filtercol.count()
filtered_c = df[df.filtercol > y]
c_count = filtered_c.filtercol.count()
Run Code Online (Sandbox Code Playgroud)
但有没有更简洁的方法来完成同样的事情?
给定整数数组
[1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5]
Run Code Online (Sandbox Code Playgroud)
我需要掩盖重复N多次的元素。需要说明的是:主要目标是检索布尔掩码数组,以后再用于装箱计算。
我想出了一个相当复杂的解决方案
[1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5]
Run Code Online (Sandbox Code Playgroud)
给例如
import numpy as np
bins = np.array([1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5])
N = 3
splits = np.split(bins, np.where(np.diff(bins) != 0)[0]+1) …Run Code Online (Sandbox Code Playgroud) 我有一个简单的数据框,我想每3行bin.
它看起来像这样:
col1
0 2
1 1
2 3
3 1
4 0
Run Code Online (Sandbox Code Playgroud)
我想把它变成这个:
col1
0 2
1 0.5
Run Code Online (Sandbox Code Playgroud)
我已经在这里发布了类似的问题,但我不知道如何将解决方案移植到我当前的用例中.
你能帮我吗?
非常感谢!
将数值合并到一定范围内的有效方法是什么?例如,假设我有一个值列表,我想按它们的范围将它们分成N个bin.现在,我做这样的事情:
from scipy import *
num_bins = 3 # number of bins to use
values = # some array of integers...
min_val = min(values) - 1
max_val = max(values) + 1
my_bins = linspace(min_val, max_val, num_bins)
# assign point to my bins
for v in values:
best_bin = min_index(abs(my_bins - v))
Run Code Online (Sandbox Code Playgroud)
其中min_index返回最小值的索引.我们的想法是,您可以通过查看具有最小差异的bin来找到该点落入的bin.
但我认为这有奇怪的边缘情况.我正在寻找的是一个很好的代表箱子,理想情况下半封闭半开(所以没有办法将一个点分配到两个箱子),即
bin1 = [x1, x2)
bin2 = [x2, x3)
bin3 = [x3, x4)
etc...
Run Code Online (Sandbox Code Playgroud)
使用numpy/scipy在Python中执行此操作的好方法是什么?我只关心binning整数值.
非常感谢您的帮助.