我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何将一个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")

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

linux如何将一个文本文件的格式从MSDOS转换成UNIX

将DOS文本文件转换为UNIX格式涉及更改换行符约定。可以使用sed、tr、awk、Perl或Python命令删除或替换CRLF序列,从而将文件转换为UNIX格式。在使用这些命令之前,请备份原始文件,并注意它们不适用于二进制文件。
linux如何将一个文本文件的格式从MSDOS转换成UNIX
2024-04-02

linux如何将一个文本文件的格式从UNIX转换成MSDOS

本文详细介绍了在Linux下将文本文件从UNIX格式转换成MSDOS格式的多种方法,包括使用tr、sed、perl、dos2unix和unix2dos命令,以及使用文本编辑器或在线文件转换网站。这些方法可以帮助用户在不同操作系统之间方便地交换文本文件。
linux如何将一个文本文件的格式从UNIX转换成MSDOS
2024-04-02

python如何实现大文本文件分割成多个小文件

小编给大家分享一下python如何实现大文本文件分割成多个小文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂
2023-06-14

Excel如何打开csv格式文件并生成图形功能

这篇文章将为大家详细讲解有关Excel如何打开csv格式文件并生成图形功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在UNIX/LINUX服务器端生成了csv格式文件之后,有时需要根据csv文件的数据
2023-06-13

Linux如何将多个文件内容合成一个

这篇文章主要讲解了“Linux如何将多个文件内容合成一个”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux如何将多个文件内容合成一个”吧!  Linux 或 类Unix 下实现合并多个
2023-06-13

linux如何将一个文本文件转换成html

本文介绍了在Linux系统中将文本文件转换为HTML的五种方法:文本编辑器、pandoc、lynx、w3m和text2html。每种方法都提供了详细的步骤,包括高级选项。此外,还提供了一个示例,演示了使用nano和pandoc进行转换。需要注意的是,所选方法取决于文本文件的复杂性以及所需的HTML输出。转换后的HTML文件可以在任何Web浏览器中打开和查看。
linux如何将一个文本文件转换成html
2024-04-02

如何利用python将一个py文件变成一个软件详解

在我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序,下面这篇文章主要给大家介绍了关于如何利用python将一个py文件变成一个软件的相关资料,需要的朋友可以参考下
2023-05-16

linux如何将几个文件和目录同时压缩成一个zip格式的压缩包

在Linux中,可以通过zip命令将多个文件和目录压缩为ZIP文件。使用-r选项可递归压缩目录,而-j和-z选项分别指定bzip2和Zlib算法。要同时压缩多个文件和目录,只需将它们的路径作为命令参数传递。使用unzip-t命令可以验证压缩包的完整性。
linux如何将几个文件和目录同时压缩成一个zip格式的压缩包
2024-04-02

如何使用Python将MySQL数据库中的数据导出为CSV文件?(Python环境下如何将MySQL数据导出为CSV格式?)

使用Python将MySQL数据库数据导出为CSV格式的过程包括:连接数据库,执行SELECT查询获取数据,创建CSV文件,逐行写入数据,最后关闭连接。通过mysql.connector库连接数据库,使用cursor对象执行查询,利用csv模块创建CSV文件并写入数据,可轻松实现MySQL数据的导出。
如何使用Python将MySQL数据库中的数据导出为CSV文件?(Python环境下如何将MySQL数据导出为CSV格式?)
2024-04-02

linux如何比较两个文件的内容只删除两个文件共有的部分

本文介绍了多种比较两个文件内容并仅删除共有的部分的方法,包括diff、cmp、comm、awk命令和Python脚本。方法有不同的优点和缺点,如diff快速高效,awk对大文件较慢,Python灵活但需要编程知识。请根据您的需要选择最合适的方法。
linux如何比较两个文件的内容只删除两个文件共有的部分
2024-04-02

linux如何查看一个文件的前两行

本文详细介绍了在Linux中查看文件前两行的六种方法:head、tail、grep、sed、awk和cat。每种方法都有其优点和使用场景。head最简单,tail适用于文件较大时,grep适用于搜索特定模式,sed和awk提供高级文本处理功能,cat用于管道操作。选择最合适的方法取决于具体需求和偏好。
linux如何查看一个文件的前两行
2024-04-02

计算机中如何把两个文件压缩成一个压缩包

这篇文章给大家分享的是有关计算机中如何把两个文件压缩成一个压缩包的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。方法:1、整理好要压缩的文件,把两个文件放在同一个目录下;2、选中要压缩的两个文件,鼠标右击,在打开的
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录