我需要分析成千上万行数据.数据从文本文件导入.每行数据都有八个变量.目前,我使用一个类来定义数据结构.当我阅读文本文件时,我将每个行对象存储在通用列表List中.
我想知道是否应该切换到使用关系数据库(SQL),因为我需要分析每行文本中的数据,尝试将其与我当前存储在通用列表(List)中的定义术语相关联.
目标是使用定义翻译大量数据.我希望定义的数据是可过滤的,可搜索的等等.使用数据库更有意义,我想的更多,但我想在更改之前与更有经验的开发人员确认,然后再次(我使用结构和首先是arraylists).
我能想到的唯一缺点是,在用户翻译和查看数据后,不需要保留数据.不需要永久存储数据,因此使用数据库可能有点过分.
通常,我想对包含一些因子变量的数据集运行交叉验证,并且在运行一段时间后,交叉验证例程失败并出现错误:factor x has new levels Y.
例如,使用包启动:
library(boot)
d <- data.frame(x=c('A', 'A', 'B', 'B', 'C', 'C'), y=c(1, 2, 3, 4, 5, 6))
m <- glm(y ~ x, data=d)
m.cv <- cv.glm(d, m, K=2) # Sometimes succeeds
m.cv <- cv.glm(d, m, K=2)
# Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
# factor x has new levels B
Run Code Online (Sandbox Code Playgroud)
更新:这是一个玩具示例.同样的问题也出现在较大的数据集中,其中有几次出现级别,C但它们都不存在于训练分区中.
createDataPartition包caret中的函数函数对结果变量进行分层抽样并正确警告:
此外,对于'createDataPartition',非常小的类大小(<= 3),类可能不会出现在训练和测试数据中.
我想到两种解决方案: …
我想创建自己的变换器以与sklearn Pipeline一起使用.因此,我正在创建一个实现fit和transform方法的类.变压器的目的将是从具有比的NaN指定数目的多个矩阵中删除行.所以我面临的问题是如何更改传递给变压器的X和y矩阵?我相信这必须在fit方法中完成,因为它可以同时访问X和y.因为一旦我将X重新分配给具有较少行的新矩阵,python就会通过赋值传递参数,因此对原始X的引用将丢失(当然对于y也是如此).是否可以保留此参考?
我正在使用pandas DataFrame来轻松删除具有太多NaN的行,这可能不适合我的用例.当前代码如下所示:
class Dropna():
# thresh is max number of NaNs allowed in a row
def __init__(self, thresh=0):
self.thresh = thresh
def fit(self, X, y):
total = X.shape[1]
# +1 to account for 'y' being added to the dframe
new_thresh = total + 1 - self.thresh
df = pd.DataFrame(X)
df['y'] = y
df.dropna(thresh=new_thresh, inplace=True)
X = df.drop('y', axis=1).values
y = df['y'].values
return self
def transform(self, X):
return X
Run Code Online (Sandbox Code Playgroud) 我们假设我使用ggmap包生成伦敦地图:
library(ggmap)
library(mapproj)
map <- get_map(location = "London", zoom = 11, maptype = "satellite")
p <- ggmap(map)+
theme(legend.position = "none")
print(p)
Run Code Online (Sandbox Code Playgroud)
现在我想在这个图中添加一个带有一些中心坐标的圆(比方说:lon = -0.1,lat = 52.23)和半径,例如以公里为单位.我尝试使用类似问题的解决方案(用ggplot2绘制一个圆圈),你可以在这里添加一个这样的语句:
p <- p + annotate("path",
x = xc+r*cos(seq(0,2*pi,length.out=100)),
y = yc+r*sin(seq(0,2*pi,length.out=100)))
Run Code Online (Sandbox Code Playgroud)
它有效,但由于规模不同,圆圈实际上不是圆形.是否可以正确绘制它?任何帮助,将不胜感激!
编辑:我找到了使用不同包的解决方案(https://gis.stackexchange.com/questions/119736/ggmap-create-circle-symbol-where-radius-represents-distance-miles-or-km),输出结果是正确.不过,如果有人知道如何使用ggmap,请分享它.
我正在使用一些关于杀菌剂使用的数据,其中包括年份,杀菌剂,使用量以及熊猫DataFrame中的一些不相关的列.看起来有点像:
Year, State, Fungicide, Value
2011, California, A, 12879
2011, California, B, 29572
2011, Florida, A, 8645
2011, Florida, B, 19573
2009, California, A, 8764
2009, California, B, 98643,
...
Run Code Online (Sandbox Code Playgroud)
我想要的是随着时间的推移使用的总杀菌剂的单个图,每个单独的杀真菌剂(以不同的颜色)绘制线.我用.groupby来获取每年使用的每种杀菌剂的总量:
apple_fplot = df.groupby(['Year','Fungicide'])['Value'].sum()
Run Code Online (Sandbox Code Playgroud)
这给了我想要绘制的值,例如:
Year, Fungicide, Value
...
2009, A, 128635
B, 104765
2011, A, 154829
B, 129865
Run Code Online (Sandbox Code Playgroud)
现在我需要绘制它让每个杀真菌剂(A,B,...)是一个图一个单独的行的价值随时间
有没有办法这样做而不将它全部分开?原谅我的无知,我是python的新手,我仍然熟悉它.
在pandas中,axis=0代表行,axis=1代表列。因此,要获取 pandas 中每行值的总和,请调用 df.sum(axis=0) 。但它返回每列中的值的总和,反之亦然。为什么???
import pandas as pd
df=pd.DataFrame({"x":[1,2,3,4,5],"y":[2,4,6,8,10]})
df.sum(axis=0)
Run Code Online (Sandbox Code Playgroud)
数据框:
x y
0 1 2
1 2 4
2 3 6
3 4 8
4 5 10
Run Code Online (Sandbox Code Playgroud)
输出:
x 15
y 30
Run Code Online (Sandbox Code Playgroud)
预期输出:
0 3
1 6
2 9
3 12
4 15
Run Code Online (Sandbox Code Playgroud) 我需要分析有关DSL线路的互联网会话的一些数据.我想看看会话持续时间是如何分配的.我认为这样做的一个简单方法是首先制作所有会话持续时间的概率密度图.
我已经在R中加载了数据并使用了该density()函数.所以,它是这样的
plot(density(data$duration), type = "l", col = "blue", main = "Density Plot of Duration",
xlab = "duration(h)", ylab = "probability density")
Run Code Online (Sandbox Code Playgroud)
我是R的新手和这种分析.这是我通过谷歌找到的.我有一个情节,但我留下了一些问题.这是正确的功能来做我想做的事还是还有别的什么?
在图中我发现Y轴刻度为0 ... 1.5.我不知道它怎么可能是1.5,不应该是0 ... 1?
此外,我想得到一个更平滑的曲线.由于数据集非常大,所以线条实际上是锯齿状的.当我提出这个问题时,让它们平滑会更好.我该怎么做呢?
请考虑下表:
SELECT id, value FROM table ORDER BY id ASC;
+-----+---------+
| id | value |
+-----+---------+
| 12 | 158 |
| 15 | 346 |
| 27 | 334 |
| 84 | 378 |
| 85 | 546 |
+-----+---------+
Run Code Online (Sandbox Code Playgroud)
该id列自动递增但包含间隙.该value列是数字.
我想value通过设置上面value的value两行来查看随时间的增加.这是针对行id=85我想要设置与行(334)相关value的行id=85(546 ).因此,要计算行的值为546/334 = 1.63473.valueid=27id=85
这是我想要实现的结果:
SELECT id, value, ...;
+-----+---------+---------------------+
| id | value | value/lag(value, 2) …Run Code Online (Sandbox Code Playgroud) 可能重复:
Matlab互相关与相关系数问题
当我在MATLAB中交叉关联2个数据集a和b(每个73点长)并绘制图形时,它看起来像一个145点的三角形.当我绘制范围为+/- 1的互相关输出时,我在相关系数和类似三角形的图之间感到困惑.
我有两个数据帧
df1
Name class value
Sri 1 5
Ram 2 8
viv 3 4
df2
Name class value
Sri 1 5
viv 4 4
Run Code Online (Sandbox Code Playgroud)
我想要的输出是,
df,
Name class value
Sri 2 10
Ram 2 8
viv 7 8
Run Code Online (Sandbox Code Playgroud)
请帮助,提前谢谢!
data-analysis ×10
python ×4
pandas ×3
r ×3
sql ×2
c# ×1
data-science ×1
dataframe ×1
distribution ×1
ggmap ×1
ggplot2 ×1
google-maps ×1
group-by ×1
list ×1
math ×1
matlab ×1
matplotlib ×1
mysql ×1
numpy ×1
plot ×1
probability ×1
scikit-learn ×1