python - 将 CSV 缩减采样 10 倍并将其保存到另一个文件中

标签 python c pandas csv awk

我有一个包含许多行(即 3000 到 4000)的 .csv 文件,其中每行代表一个采样率为 1Hz 的事件。我想创建另一个 .csv,其中每一行代表一个采样率为 0.1Hz 的事件。

换句话说,我希望从分辨率为每秒 1 个事件的 .csv 变为分辨率为每 10 秒 1 个事件的 .csv。

我需要与语言无关的算法的伪代码,但也需要一个实现(最好用 C 语言)。

最佳答案

不太清楚你想用哪种语言来实现它。这是一个与语言无关的计划:

  • 询问用户要加载的文件
  • 以“读取”方式打开文件
  • 以写入模式打开另一个文件
  • 逐行迭代读取文件。
  • 保留一个计数器,并在每次在循环中读取一行时递增该计数器。
  • if counter mod 10 == 0 则将该行追加到写入文件中。
  • 完成后关闭这两个文件。

这是一个更高级别的 python 实现,它使用 pandas 为我们进行低级操作。

import pandas as pd

# Boilerplate to simulate the author initial condition
# Creating a sample CSV file with a 1Hz resolution
df = pd.DataFrame()
df['time'] = pd.date_range(start='2020-01-08', periods=3000, freq='s')
df.to_csv(path_or_buf="input.csv",index=False)

# Read the file
df = pd.read_csv('input.csv')
# Convert to datetime
df['time'] = pd.to_datetime(df['time'])
# Resampling down to 0.1Hz
df = df.resample('10s', on='time').first()
df.to_csv(path_or_buf="output.csv",index=False)

这个产量:

2020-01-08 00:00:00
2020-01-08 00:00:10
2020-01-08 00:00:20
2020-01-08 00:00:30
2020-01-08 00:00:40

关于python - 将 CSV 缩减采样 10 倍并将其保存到另一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59377246/

相关文章:

python - ipykernel(Jupyter 笔记本/实验室)无法从 traitlets.utils 导入名称 '' filefind”

python - 反转dask分布式数据帧的简单方法

python - 如何断开update_last_login?

python - 将 'filepath' 列添加到 pandas DataFrame

python - 优化 Pandas 数据框列的四分位数?

python - 无法使用 pyside2 和 QtDesigner 在我的主窗口中导入我的小部件

c - 编译为 LLVM 的问题

c - Visual Studio Community 2017 cl 链接器不会链接 GTK3 库?

c - 如何将具有相同静态变量名的全局和局部存储在C 内部内存中?

python - 如何在 pandas 的 groupby 之后乘以一列的行?