我正在处理每小时时间序列(日期、时间(小时)、P)并尝试计算每小时每日总“金额”的比例。我知道我可以使用 Pandas 的 resample('D', how='sum') 来计算 P 的每日总和 (DailyP) 但在同一步骤中,我想使用每日 P 来计算每日 P 的比例每小时(因此,P/DailyP)以每小时时间序列结束(即,与原始频率相同)。我不确定这是否可以在 Pandas 术语中称为“重新采样”。这可能从我对术语的使用中显而易见,但我绝对是 Python 或编程方面的新手。如果有人可以建议一种方法来做到这一点,我将不胜感激。谢谢!
我不清楚图像处理中重采样和插值之间的区别。如果我有一个 geotiff 并且我想提高它的分辨率,我应该使用重采样方法,例如最近邻,对吗?例如,我发现 gdalwarp 函数可以做到这一点。
插值方法,即克里金法呢?如果我的数据分布不均匀会更好吗?如果我还想考虑数字高程模型来校正我的图像怎么办?非常感谢您的帮助,并对混淆表示抱歉。
劳拉
我在 Python 中有一个时间序列数据帧,每秒钟频率。我试图聚合数据以获得Speed每分钟的最大值。我正在使用此代码:
df = pd.DataFrame({ 'Speed' : [],
'Acceleration' : []
})
rng = pd.date_range('1/1/2011', periods=72, freq='s')
df['Speed'] = np.random.randn(len(rng))
df['Acceleration'] = np.random.randn(len(rng))
df = df.set_index(rng)
df['Acceleration'].resample("1Min").max()
Run Code Online (Sandbox Code Playgroud)
但是,我有另一列Speed,我有兴趣Acceleration在每分钟将它的相关值设置为最大值。例如,假设最高Acceleration为13:15发生在13时15分10秒,这是1.2米/秒^ 2。同一秒,速度为5m/s。除了最大加速之外,我还想获得那个速度。谢谢。
我是 python 的新手,使用 Pandas 包 (python3.6) 中的 Dataframe。
我像下面的代码一样设置它,
df = DataFrame({'list1': list1, 'list2': list2, 'list3': list3, 'list4': list4, 'list5': list5, 'list6': list6})
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误,如 ValueError: arrays must all be same length
所以,我检查阵列的所有长度,list1和list2比其他列表(1点)更多的数据。如果我想使用 将 1 个数据添加到其他 4 个列表(list3, list4, list5, list6)pd.resample,那么我应该如何编写代码...?
此外,这些列表是 1 分钟的时间序列列表。
有人有想法或帮助我吗?
提前致谢。
编辑 所以我改变了 EdChum 所说的。并在前面添加了时间表。就像下面一样。
2017-04-01 0:00 895.87 730 12.8 4 19.1 380
2017-04-01 0:01 894.4 730 12.8 4 19.1 380
2017-04-01 0:02 893.08 730 …Run Code Online (Sandbox Code Playgroud) 我正在尝试重新采样到每月的值,但关于第 15 天
我检查了时间序列偏移量文档,但只有
M 月结束频率 SM 半月结束频率(15 日和月末) MS 月开始频率 SMS 半月开始频率(第 1 和 15 日)
而我只需要第 15 天
就像是
2000-01-15 8.7
2000-02-15 6.9
2000-03-15 15.8
2000-04-15 12.4
Run Code Online (Sandbox Code Playgroud)
我试过 pd.offsets.MonthBegin 和 MonthOffset 没有结果
我从 2 个不同的传感器收集了数据,这些传感器以非均匀间隔异步运行。我想将来自传感器 1 的数据插入到来自传感器 2 的时间戳中。我找到了一种使用 Pandas 进行此操作的方法,包括首先创建一个组合时间序列,对其进行插值,然后将插入的时间序列与第二个传感器的时间序列相结合只带出相交的时间。有没有更 Pythonic(或 Pandaic)的方式来更有效地做到这一点。这是使用我上面描述的方法的示例代码:
import numpy as np
from matplotlib import pyplot as plt
import datetime
import pandas as pd
rand_secs = np.sort(np.random.randint(1, high=60,size=10))
times = [pd.datetime(2019, 5, 23,9, x) for x in rand_secs]
frame1 = pd.DataFrame(index = times,
data = np.sin(rand_secs/60*2*np.pi))
ax1 = frame1.plot(marker='+')
plt.xlim(pd.datetime(2019, 5, 23,9, 0), pd.datetime(2019, 5, 23,9, 59))
plt.ylim(-1.1,1.1)
times2 = [pd.datetime(2019, 5, 23,9, x) for x in np.sort(np.random.randint(1, high=60,size=10))]
frame2 = pd.DataFrame(index = times2)
frame12_combined = pd.merge(frame1, …Run Code Online (Sandbox Code Playgroud) 我正在做一个数据不平衡的项目。我想使用随机欠采样来平衡数据。我很困惑是否应该在测试列车分割后进行欠采样,或者我应该先进行欠采样,然后再进行列车测试分割?
我的方法:
我的做法正确吗?如果我错了,请纠正我。
我想我在下面的代码中遗漏了一些东西。
from sklearn.model_selection import train_test_split
from imblearn.over_sampling import SMOTE
# Split into training and test sets
# Testing Count Vectorizer
X = df[['Spam']]
y = df['Value']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=40)
X_resample, y_resampled = SMOTE().fit_resample(X_train, y_train)
sm = pd.concat([X_resampled, y_resampled], axis=1)
Run Code Online (Sandbox Code Playgroud)
当我收到错误时
ValueError:无法将字符串转换为浮点数:---> 19 X_resampled,y_resampled = SMOTE().fit_resample(X_train,y_train)
数据示例是
Spam Value
Your microsoft account was compromised 1
Manchester United lost against PSG 0
I like cooking 0
Run Code Online (Sandbox Code Playgroud)
我会考虑转换训练集和测试集来解决导致错误的问题,但我不知道如何应用于两者。我在谷歌上尝试了一些例子,但它没有解决问题。
嗨,我用此代码创建了dataFrame字典
import os
import pandas
import glob
path="G:\my_dir\*"
dataList={}
for files in glob.glob(path):
dataList[files]=(read_csv(files,sep=";",index_col='Date'))
Run Code Online (Sandbox Code Playgroud)
词典中存在的不同数据帧具有不同的时间样本。dataFrame(A)的示例是
Date Volume Value
2014-01-04 06:00:02 6062 108000.0
2014-01-04 06:06:05 6062 107200.0
2014-01-04 06:12:07 6062 97400.0
2014-01-04 06:18:10 6062 99200.0
2014-01-04 06:24:12 6062 91300.0
2014-01-04 06:30:14 6062 84100.0
2014-01-04 06:36:17 6062 57000.0
Run Code Online (Sandbox Code Playgroud)
dataFrame(B)的示例是
Date Volume Value
2014-01-04 05:52:50 6062 4.7
2014-01-04 05:58:53 6062 4.7
2014-01-04 06:04:56 6062 4.9
2014-01-04 06:10:58 6062 5.1
2014-01-04 06:17:01 6062 5.2
2014-01-04 06:23:03 6062 5.2
2014-01-04 06:29:05 6062 5.5
2014-01-04 06:35:08 …Run Code Online (Sandbox Code Playgroud) 样本数据:
import pandas as pd
import numpy as np
import datetime
data = {'value': [1,2,4,3], 'names': ['joe', 'bob', 'joe', 'bob']}
start, end = datetime.datetime(2015, 1, 1), datetime.datetime(2015, 1, 4)
test = pd.DataFrame(data=data, index=pd.DatetimeIndex(start=start, end=end,
freq="D"), columns=["value", "names"])
Run Code Online (Sandbox Code Playgroud)
给出:
value names
2015-01-01 1 joe
2015-01-02 2 bob
2015-01-03 4 joe
2015-01-04 3 bob
Run Code Online (Sandbox Code Playgroud)
我想通过“ 2D”重新采样并获得最大值,例如:
df.resample('2D')
Run Code Online (Sandbox Code Playgroud)
预期结果应为:
value names
2015-01-01 2 bob
2015-01-03 4 joe
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
resampling ×10
pandas ×8
python ×6
time-series ×3
argmax ×1
csv ×1
dataframe ×1
merging-data ×1
python-3.x ×1
sampling ×1
smote ×1