pandas文件压缩:输出两个csv压缩文件并再次压缩

解决思路:

1.输出2个文件为csv.gz,进行首次压缩

2.对两个文件再次进行zip压缩,格式为.zip


def zip_cell_file(file1, file2, zip_file):
    with zipfile.ZipFile(zip_file, 'w') as z:
        z.write(file1)
        z.write(file2)


if __name__ == '__main__':
    file1 = '/data/1.csv.gz'
    file2 = '/data/2.csv.gz'
    zip_file = '/data/3.zip'

    data_frame1.to_csv(file1, index=False, sep=',', encoding='utf-8-sig', compression='gzip')

    data_frame2.to_csv(file2, index=False, sep=',', encoding='utf-8-sig', compression='gzip')
    
    # 压缩文件
    zip_cell_file(file1 , file12, zip_file)



处理完后会在/data目录下生成一个3.zip文件,解压后发现有个data目录,里面才是需要的1.csv.gz和2.csv.gz,故而进行优化添加arcname属性值:

def zip_cell_file(file1, file2, zip_file):
    with zipfile.ZipFile(zip_file, 'w') as z:
        z.write(file1, arcname=file1.split('/')[-1])
        z.write(file2, arcname=file2.split('/')[-1])

优化后,解压/data/3.zip 后可得到1.csv.gz和 2.csv.gz,可再次进行解压得到里面的1.csv和 2.csv

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个基于稀疏表示的去噪方法的示例代码,使用Keras框架实现。这个方法使用了一个自编码器来学习原始信号的稀疏表示,并使用这个稀疏表示来去噪信号。具体步骤如下: 1. 加载csv文件中的时序信号数据,并将其转换成符合自编码器输入的格式。 2. 定义自编码器模型,包括编码器和解码器两部分。编码器将时序信号压缩成一个稀疏表示,解码器将稀疏表示还原成原始信号。 3. 训练自编码器模型,使用稀疏表示和原始信号的重构误差作为损失函数。 4. 对测试数据进行去噪处理,并计算信噪比(SNR)、均方误差(MSE)和峰值信噪比(PSNR)。 5. 将去噪后的数据保存为csv文件。 ```python import numpy as np import pandas as pd from keras.layers import Input, Dense from keras.models import Model from sklearn.metrics import mean_squared_error, mean_absolute_error, peak_signal_noise_ratio # 加载csv文件中的时序信号数据 data = pd.read_csv('data.csv') # 将数据转换成符合自编码器输入的格式 data_x = data.iloc[:, 0:3].values data_x = np.expand_dims(data_x, axis=2) # 定义自编码器模型 input_layer = Input(shape=(3, 1)) encoded = Dense(32, activation='relu')(input_layer) encoded = Dense(16, activation='relu')(encoded) encoded = Dense(8, activation='relu')(encoded) decoded = Dense(16, activation='relu')(encoded) decoded = Dense(32, activation='relu')(decoded) decoded = Dense(3, activation='linear')(decoded) autoencoder = Model(input_layer, decoded) autoencoder.compile(optimizer='adam', loss='mse') # 训练自编码器模型 autoencoder.fit(data_x, data_x, epochs=100, batch_size=32, shuffle=True) # 对测试数据进行去噪处理 denoised_data_x = autoencoder.predict(data_x) # 计算信噪比(SNR)、均方误差(MSE)和峰值信噪比(PSNR) snr = 10 * np.log10(np.sum(data_x ** 2) / np.sum((data_x - denoised_data_x) ** 2)) mse = mean_squared_error(data_x, denoised_data_x) psnr = peak_signal_noise_ratio(data_x, denoised_data_x) # 将去噪后的数据保存为csv文件 denoised_data = pd.DataFrame(denoised_data_x[:, :, 0], columns=['x', 'y', 'z']) denoised_data.to_csv('denoised_data.csv', index=False) print('SNR: ', snr) print('MSE: ', mse) print('PSNR: ', psnr) ``` 在这个示例中,我们使用了一个三层的全连接自编码器,其中编码层的维度为8。你可以根据自己的数据集和需求调整模型的结构和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lytcreate.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值