我正在绘制具有大量数据点的累积分布函数.我在同一个绘图上绘制了几行,用标记识别,因为它将以黑白打印.我想要的是在x维度上均匀间隔的标记.我得到的是每个数据点一个标记(并且给定点数,它们都重叠)
我不确定这是我对如何绘制好的理解,或者只是缺乏理解matplotlib.我找不到'标记频率'设置.
一行的简单解决方案是从行中获取每个N'值,并将其用作linestyle =''的单独行,但我希望标记垂直对齐,并且不同的x数组具有不同的长度.
# in reality, many thousands of values
x_example = [ 567, 460, 66, 1034, 275, 26, 628, 99, 287, 157, 705, 421, 1093, \
139, 204, 14, 240, 179, 94, 139, 645, 670, 47, 520, 891, 450, 56, 964, \
1728, 99, 277, 356, 1628, 745, 364, 88, 112, 810, 816, 523, 401, 89, \
278, 917, 370, 53, 39, 90, 853, 356 ]
x = sort(x_example)
y = linspace(0,1,len(x))
ax = subplot(1,1,1)
plots[w] = ax.plot(x,y, …Run Code Online (Sandbox Code Playgroud) 我是R.的新手.我需要生成一个具有累积频率和相对频率的简单频率表(如书中).
所以我想从一些简单的数据生成
> x
[1] 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10 12 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10
[36] 12 15 19 20 22 20 19 19 19
Run Code Online (Sandbox Code Playgroud)
像这样的表:
frequency cumulative relative
(9.99,11.7] 2 2 0.04545455
(11.7,13.4] 2 4 0.04545455
(13.4,15.1] 1 5 0.02272727
(15.1,16.9] 10 15 0.22727273
(16.9,18.6] 22 37 0.50000000
(18.6,20.3] 6 43 0.13636364
(20.3,22] 1 …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一个(更好的)技巧来反转matplotlib中的累积直方图.
假设我在0.0到1.0的范围内有一些分数,其中1.0是最好的分数.现在,我有兴趣绘制多少样本高于某个分数阈值.
import numpy as np
import matplotlib.pyplot as plt
d = np.random.normal(size=1000)
d = (d - d.min()) / (d.max() - d.min())
plt.hist(d, 50, histtype="stepfilled", alpha=.7)
Run Code Online (Sandbox Code Playgroud)

默认情况下,matplotlib会绘制累积直方图,如'样本数<=得分'
plt.hist(d, 50, histtype="stepfilled", alpha=.7, cumulative=True)
Run Code Online (Sandbox Code Playgroud)

我真正想要的是累积直方图没有显示'样本数<=得分'但是'样本数> =得分'
我可以这样做,但那我怎么能摆脱x轴上的"减号"?
plt.hist(d-1, 50, histtype="stepfilled", alpha=.7, cumulative=True)
Run Code Online (Sandbox Code Playgroud)

有更好的想法吗?
给定一numpy组阈值,生成满足这些值的另一个数组的计数数组的最有效方法是什么?
假设阈值数组较小且已排序,并且要计数的值数组较大且未排序。
示例:对于 的每个元素,计算大于或等于它valueLevels的元素:values
import numpy as np
n = int(1e5) # size of example
# example levels: the sequence 0, 1., 2.5, 5., 7.5, 10, 5, ... 50000, 75000
valueLevels = np.concatenate(
[np.array([0.]),
np.concatenate([ [ x*10**y for x in [1., 2.5, 5., 7.5] ]
for y in range(5) ] )
]
)
np.random.seed(123)
values = np.random.uniform(low=0, high=1e5, size=n)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试过列表理解方法。
np.array([sum(values>=x) for x in valueLevels])速度慢得令人难以接受np.array([len(values[values>=x]) for x in valueLevels])是一个进步鉴于以下问题:
有一个k整数序列,名为s,可以有2个操作,
1)Sum [i,j] - s [i] + s [i + 1] + ... + s [j]的值是多少?
2)更新[i,val] - 将s [i]的值更改为val.
我相信这里的大多数人都听说过使用累积频率表/ fenwick树来优化复杂性.
现在,如果我不想查询总和,而是我想执行以下操作:
乘积[i,j] - s [i]*s [i + 1]*...*s [j]的值是多少?
新问题起初似乎微不足道,至少对于第一次操作Product [i,j].
假设我使用名为f的累积产品表:
但是如果s [i]的旧值为0,我们将面临2个问题:
除以0.但是通过检查s [i]的旧值是否为0可以很容易地解决这个问题.
任何实数为0的乘积为0.此结果将导致从f [i]到f [j]的所有其他值为0.因此我们无法成功执行Update [i,val].这个问题并不是那么微不足道,因为它会影响f [i]以外的其他值. …
我正在尝试编写一个占用大数据帧的程序,并用这些值的累积频率(按升序排序)替换每列值.例如,如果值列为:5,8,3,5,4,3,8,5,5,1那么相对和累积频率为:
然后原始列变为:0.8,1.0,0.3,0.8,0.4,0.3,1.0,0.8,0.8,0.1
以下代码正确执行此操作,但由于嵌套循环,它可能很难缩放.知道如何更有效地执行此任务吗?
mydata = read.table(.....)
totalcols = ncol(mydata)
totalrows = nrow(mydata)
for (i in 1:totalcols) {
freqtable = data.frame(table(mydata[,i])/totalrows) # create freq table
freqtable$CumSum = cumsum(freqtable$Freq) # calc cumulative freq
hashtable = new.env(hash=TRUE)
nrows = nrow(freqtable)
# store cum freq in hash
for (x in 1:nrows) {
dummy = toString(freqtable$Var1[x])
hashtable[[dummy]] = freqtable$CumSum[x]
} …Run Code Online (Sandbox Code Playgroud) 我在数据库列中有一个时间列表(表示访问网站).
我需要按时间间隔对它们进行分组,然后获得这些日期的"累积频率"表.
例如,我可能有:
9:01
9:04
9:11
9:13
9:22
9:24
9:28
Run Code Online (Sandbox Code Playgroud)
我想把它转换成
9:05 - 2
9:15 - 4
9:25 - 6
9:30 - 7
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我甚至可以在SQL中轻松实现这一点吗?我可以很容易地在C#中做到这一点
我一直在Excel办公室工作.我的记录变得太多了,想要使用mysql.i有一个来自db的视图它有"date,stockdelivered,sales"列我想添加另一个计算字段,称为"库存余额".我知道这应该是在数据输入期间在客户端完成的.我有一个脚本,只根据视图和表生成php列表/报告,它没有添加计算字段的选项,所以我想在可能的情况下在mysql中创建一个视图.
在excel中,我曾经如下做过.

我想知道这是否可能在mysql中.

我对我的sql没有太多经验,但我想第一个必须能够选择前一行.colomn4然后将其添加到当前row.colomn2减去当前row.colomn3
如果有另一种方法可以实现相同的输出请建议.
假设我有一个数据表,如下所示:
ItemNo | ItemCount | Proportion
------------------------------------------
1 3 0.15
2 2 0.10
3 3 0.15
4 0 0.00
5 2 0.10
6 1 0.05
7 5 0.25
8 4 0.20
Run Code Online (Sandbox Code Playgroud)
换句话说,总共有20个项目,并且每个ItemNo总和的累积比例为100%.表行的排序在这里很重要.
是否可以执行没有循环或游标的SQL查询来返回超过累积比例的第 ItemNo一个?
换句话说,如果我想要检查的'比例'是35%,那么第一行超过那个ItemNo 3,因为0.15 + 0.10 + 0.15 = 0.40
同样,如果我想找到超过75%的第一行,那就是ItemNo 7,Proportion直到那一行的总和小于0.75.
我有两个数据帧R.第一个数据帧是cumFreqDist具有相关周期的累积频率分布().数据框的第一行如下所示:
Time cumfreq
0 0.0000000
4 0.9009009
6 1.8018018
8 7.5075075
12 23.4234234
16 39.6396396
18 53.4534535
20 58.2582583
24 75.3753754
100 100.0000000
Run Code Online (Sandbox Code Playgroud)
第二个数据框是来自runif分布的10000个绘图,使用以下代码:
testData <- (runif(10000))*100
Run Code Online (Sandbox Code Playgroud)
对于每一行testData,我想找到相应的cumfreqin cumFreqDist并将相应的Time值添加到一个新列中testData.因为testData是一个真实数据框的测试数据框,我不想排序testData.
因为我处理的累积频率,如果该testData值23.30...的Time应返回的值8.也就是说,我需要找到cumfreq不超过该testData值的最近值,并仅返回该值.
该data.table软件包已被提及用于其他类似问题,但我的有限理解是该软件包需要在两个数据框中识别密钥(在转换为数据表之后)并且我不能假设这些testData值满足分配的要求作为一个键 - 似乎分配一个键将对数据进行排序.当我在我正在做的进一步工作中设置种子时,这将导致我的问题.
是否有一种方法(在R中使用ggplot或其他方式)在单个列(两行)中绘制频率和累积频率曲线,即另一个顶部,以便可以使用直线在两条曲线上显示给定的四分位数?我希望我对此很清楚..
你可以使用这个数据..
mydata<-structure(list(speed = c(10, 15, 20, 25, 30, 35, 40, 45, 50),frequency = c(0, 1, 5, 10, 20, 10, 6, 3, 0)), .Names = c("speed","frequency"), row.names = c(NA, -9L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)