广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何将一个CSV格式的文件分割成两个CSV文件
  • 950
分享到

如何将一个CSV格式的文件分割成两个CSV文件

2024-04-02 19:04:59 950人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录将一个CSV格式的文件分割成两个CSV文件定义split_csv函数调用上述函数将CSV文件以某列为条件分类切割大概步骤上代码 将一个CSV格式的文件分割成两个CSV文

将一个CSV格式的文件分割成两个CSV文件

项目可以按照比例将一个csv文件分割成两个csv文件,效果是:在C:\alGo_file文件夹下,将该文件夹下的data.csv文件分成train.csv和vali.csv

完整代码:

定义split_csv函数

import csv
import os
def split_csv(path, total_len, per):
    # 如果train.csv和vali.csv存在就删除
    if os.path.exists('C:\\algo_file\\train.csv'):
        os.remove('C:\\algo_file\\train.csv')
    if os.path.exists('C:\\algo_file\\vali.csv'):
        os.remove('C:\\algo_file\\vali.csv')
    with open(path, 'r', newline='') as file:
        csvreader = csv.reader(file)
        i = 0
        for row in csvreader:
            if i < round(total_len * per/100):
                # train.csv存放路径
                csv_path = os.path.join("C:\\algo_file", 'train.csv')
                print(csv_path)
                # 不存在此文件的时候,就创建
                if not os.path.exists(csv_path):
                    with open(csv_path, 'w', newline='') as file:
                        csvwriter = csv.writer(file)
                        csvwriter.writerow(row)
                    i += 1
                # 存在的时候就往里面添加
                else:
                    with open(csv_path, 'a', newline='') as file:
                        csvwriter = csv.writer(file)
                        csvwriter.writerow(row)
                    i += 1
            elif (i >= round(total_len * per/100)) and (i < total_len):
            	# vali.csv存放路径
                csv_path = os.path.join("C:\\algo_file", 'vali.csv')
                print(csv_path)
                # 不存在此文件的时候,就创建
                if not os.path.exists(csv_path):
                    with open(csv_path, 'w', newline='') as file:
                        csvwriter = csv.writer(file)
                        csvwriter.writerow(row)
                    i += 1
                # 存在的时候就往里面添加
                else:
                    with open(csv_path, 'a', newline='') as file:
                        csvwriter = csv.writer(file)
                        csvwriter.writerow(row)
                    i += 1
            else:
                break
    print("训练集和验证集分离成功")
    return

调用上述函数

if __name__ == '__main__':
    path = 'C:\\algo_file\\data.csv'
    total_len = len(open(path, 'r').readlines())# csv文件行数
    per = 80 # 分割比例%
    split_csv(path, total_len, per)

按照训练集占80%(验证集20%)比例,对C:\algo_file文件夹下的data.csv进行分割,在该文件下得到train.csv 和 vali.csv。

最后

本项目只是以C:\algo_file文件夹为例,实际上data.csv所在路径,train.csv所在路径,vali.csv所在路径包括文件名都可以更改。 

将CSV文件以某列为条件分类切割

项目中有一个数据文件数量庞大,一个文件中按照年月日分成几十万条数据,想试试能不能用python把它简单切割一下,按照日期分类切成小的csv文件。

于是在网上找了很多资料,结合自己的一些修改,整理了一下,方便以后再用。

大概步骤

1、读取文件

2、找出需要分类的列

3、将此列中重复的内容删除,每类剩余一条

4、把该列所有符合某一类的内容存入一个csv文件中

上代码 

import pandas as pd
# 读取文件数据
df=pd.read_csv('D:\\接收的文件\\lqf.csv', sep=',',engine='Python',header=[0])
# 列csv文件中所有列
df.columns = ['year', 'date', 'statefips', 'countyfips', 'ctfips', 'latitude', 'longitude', 'DS_PM_pred', 'DS_PM_stdd']
#  删除date列中的重复项,也就是说剩下的date都是已经分好的类别
date_cate = df.drop_duplicates(subset=['date'])
print(date_cate.date)
print(range(len(date_cate)))    # date中的所有类,也就是文件数
for name in date_cate.date:
    print(name)
    # 当date为某一个类时,存入一个小的csv文件中,文件名为类名
    df[df.date == name].to_csv("D:\\接收的文件\\data\\"+u"%s" %name+".csv") 

header=[0] #代表第一行为表头不计入其中,可根据表格修改。

!!!!!!(2)!!!!!!遍历文件夹中所有的文件然后进行切割,没啥用,自己做个存档而已 ↓↓↓↓↓ 

import pandas as pd
import os
j = 347
for info in os.listdir('D:\\接收的文件\year_02'):
    domain = os.path.abspath(r'D:\\接收的文件\year_02') # 获取文件夹的路径
    info = os.path.join(domain, info) # 将路径与文件名结合起来就是每个文件的完整路径
    # 读取文件数据
    df = pd.read_csv(info, sep=',', engine='python', header=[0])
    # 列csv文件中所有列
    df.columns = ['year', 'date', 'statefips', 'countyfips', 'ctfips', 'latitude', 'longitude', 'DS_PM_pred', 'DS_PM_stdd']
    grouped = df.groupby('date')
    # delete duplicated data
    ind_frame = df.drop_duplicates(subset=['date'])
    # print(ind_frame.date)
    # print(range(len(ind_frame)))
    for name in ind_frame.date:
        # print(name)
        j += 1
        print("已经扫描到第" + '{}'.fORMat(j)+'个文件')
        df[df.date == name].to_csv("D:\\接收的文件\\data2\\" + u"%s" %name+".csv")

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 如何将一个CSV格式的文件分割成两个CSV文件

本文链接: https://www.lsjlt.com/news/119722.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何将一个CSV格式的文件分割成两个CSV文件
    目录将一个CSV格式的文件分割成两个CSV文件定义split_csv函数调用上述函数将CSV文件以某列为条件分类切割大概步骤上代码 将一个CSV格式的文件分割成两个CSV文...
    99+
    2022-11-11
  • Excel如何打开csv格式文件并生成图形功能
    这篇文章将为大家详细讲解有关Excel如何打开csv格式文件并生成图形功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在UNIX/LINUX服务器端生成了csv格式文件之后,有时需要根据csv文件的数据...
    99+
    2023-06-13
  • python如何实现大文本文件分割成多个小文件
    小编给大家分享一下python如何实现大文本文件分割成多个小文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂...
    99+
    2023-06-14
  • Linux如何将多个文件内容合成一个
    这篇文章主要讲解了“Linux如何将多个文件内容合成一个”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux如何将多个文件内容合成一个”吧!  Linux 或 类Unix 下实现合并多个...
    99+
    2023-06-13
  • 如何利用python将一个py文件变成一个软件详解
    目录前言一、第一步:写好文件二、第二步:生成程序1.安装库2.使用安装的库进行转化总结前言 本文重点说如何将py文件转化为exe文件,也就是windows电脑可以打开的文件,实现起来...
    99+
    2023-05-16
    py文件怎么变成exe 怎么将python文件转成软件 py文件转换成exe
  • 一个生成文件固定格式的简单shell脚本
    #!/bin/shfile1=$(date +%Y%m%d%H%M%S) #定义变量获取当前时间ALM_TYPE=BOSS4ZC #定义变量INSTANCE_ID=62100408#定义变量STATUS=M...
    99+
    2022-10-18
  • 计算机中如何把两个文件压缩成一个压缩包
    这篇文章给大家分享的是有关计算机中如何把两个文件压缩成一个压缩包的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。方法:1、整理好要压缩的文件,把两个文件放在同一个目录下;2、选中要压缩的两个文件,鼠标右击,在打开的...
    99+
    2023-06-14
  • 如何在一个HTML文件中对文本进行格式化
    这篇文章主要介绍了如何在一个HTML文件中对文本进行格式化,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。<html> <...
    99+
    2022-10-19
  • ASP 教程中如何将数组打包成一个文件?
    在 ASP 中,数组是一种非常有用的数据结构。它可以用来存储一组相关的数据,并且可以轻松地对这些数据进行操作。但是,当我们需要将数组保存到文件中时,该怎么办呢?本文将介绍如何使用 ASP 将数组打包成一个文件,以便在需要时可以轻松地重新加...
    99+
    2023-08-02
    教程 打包 数组
  • 如何将Java程序打包成一个可执行的jar文件包
    如何将Java程序打包成一个可执行的jar文件包?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先要确认自己写的程序有没有报错。第一次我写的是Web Project到现在,...
    99+
    2023-05-31
    java jar
  • ASP、LeetCode 和 Unix:如何将它们打包成一个可部署的文件?
    随着互联网技术的发展,越来越多的应用程序需要在不同的平台上运行,因此打包成可部署文件变得越来越重要。在这篇文章中,我们将介绍如何将 ASP、LeetCode 和 Unix 打包成一个可部署的文件。 ASP 是一种基于服务器端的脚本语言,用...
    99+
    2023-11-07
    leetcode 打包 unix
  • mysql中如何删除某一个文件中的后两行
    本篇文章为大家展示了mysql中如何删除某一个文件中的后两行,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。新建一个文件并让文件中显示行号方便后续执行查看结果cat ...
    99+
    2022-10-18
  • NodeJS如何将文件夹按照存放路径变成一个对应的JSON
    这篇文章主要为大家展示了“NodeJS如何将文件夹按照存放路径变成一个对应的JSON”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“NodeJS如何将文件夹按照存...
    99+
    2022-10-19
  • Unix 打包:如何将 ASP 和 LeetCode 代码打包成一个可部署的文件?
    在软件开发中,打包是将代码、库和其他资源组合在一起以便于部署的过程。在 Unix 系统中,打包是通过 tar 命令来完成的。本文将介绍如何使用 tar 命令将 ASP 和 LeetCode 代码打包成一个可部署的文件。 ASP 是一种基于...
    99+
    2023-11-07
    leetcode 打包 unix
  • 如何在 Linux 中把多个 Markdown 文件转换成 HTML 或其他格式
    本篇内容主要讲解“如何在 Linux 中把多个 Markdown 文件转换成 HTML 或其他格式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在 Linux 中把多个 Markdown 文...
    99+
    2023-06-15
  • 如何将树莓派家庭实验室变成一个网络文件系统
    这篇文章将为大家详细讲解有关如何将树莓派家庭实验室变成一个网络文件系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。共享文件系统是为家庭实验室增加通用性和功能性的好方法。在实验室中为客户端共享一个集中的文...
    99+
    2023-06-15
  • Git如何提交一个文件中的部分修改
    这篇文章主要介绍了Git如何提交一个文件中的部分修改,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。提交一个文件中的部分修改Git interactive add 还有很多功能...
    99+
    2023-06-27
  • 详解Linux如何将一个文件夹的所有内容授权给某一个用户?
    【问题分析】 我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者。 一般只有root用户...
    99+
    2022-06-04
    linux如何把一个文件夹授权给某一个用户 linux授权文件夹给用户
  • 我们如何将MySQL表中的所有数据导出到一个文本文件中?
    可以借助 SELECT … INTO OUTFILE 语句来完成。我们借助以下示例来说明它 - 示例 假设我们从表“Student_info”中有以下数据: mysql> Select * from Student_...
    99+
    2023-10-22
  • Python中如何将路径数据类型打包成不同的文件格式?
    Python是一种高级编程语言,它被广泛应用于数据分析、机器学习、Web开发等领域。在这些领域中,数据处理是一个非常重要的环节,而路径数据类型在这个过程中也扮演了重要的角色。本文将介绍如何使用Python将路径数据类型打包成不同的文件格式,...
    99+
    2023-09-08
    打包 path 数据类型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作