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

目录
  • 将一个CSV格式的文件分割成两个CSV文件
    • 定义split_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")

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

(0)

相关推荐

  • Python中csv模块的基本使用教程

    1.csv简介 CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本 格式,用以存储表格数据,包括数字或者字符.很多程序在处理数据时都会碰到csv这种格式的文件,它的使用是比 较广泛的(Kaggle上一些题目提供的数据就是csv格式),csv虽然使用广泛,但却没有通用的标准,所以在处理csv 格式时常常会碰到麻烦,幸好python内置了csv模块.下面简单介绍csv模块中最常用的一些函数. 更多内容请参考:https:

  • 如何使用pandas对超大csv文件进行快速拆分详解

    目录 前言 1. 操作步骤 1.1 安装pandas 1.2 拆分大文件 2. 再多了解一点儿 2.1 pandas读取csv文件后,返回的是什么类型? 2.2 如何从DataFrame中读取某一行呢? 2.3 如何从DataFrame读取多行呢? 2.4 如何从DataFrame中读取某一列呢? 2.5 如何用pandas读写CSV文件? 2.6 关于pandas 3. 小结 前言 本文介绍如何利用pandas对超大CSV文件进行快速拆分. 1. 操作步骤 1.1 安装pandas pip i

  • Python中CSV文件(逗号分割)实战操作指南

    目录 一.csv文件介绍 1.csv文件简介 2.为什么要使用csv文件 二.csv文件查看 1.测试文件创建 2.查看csv文件(列表) 3.查看csv文件(字典) 4.写入文件(列表) 5.写入文件(字典) 总结 一.csv文件介绍 1.csv文件简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据.CSV

  • Python拆分大型CSV文件代码实例

    这篇文章主要介绍了Python拆分大型CSV文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # @FileName :Test.py # @Software PyCharm import os import pandas as pd # filename为文件路径,file_num为拆分后的文件行数 # 根据是否有表头执行不同程序,默认有表头

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

    目录 将一个CSV格式的文件分割成两个CSV文件 定义split_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_l

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

    本文介绍一种将一个大的文本文件分割成多个小文件的方法 方法一: 1.读取文章所有的行,并存入列表中 2.定义分割成的小文本的行数 3.将原文本内容按一定行数依次写入小文件中 4.此方法对较小的大文件比较适合 代码: #coding:utf-8 #将大文本文件分割成多个小文本文件 import os sourceFileName = "test.log" #定义要分割的文件 def cutFile(): print("正在读取文件...") sourceFileDat

  • php断点续传之文件分割合并详解

    php实现断点续传,就需要把大文件分割成多个小文件,然后单个上传.传完后在合并. │ merge.php –合并文件脚本 │ merge.zip –合并后文件 │ socket.zip –需要分割的文件 │ split.php –分割文件脚本 │ └─split –分割后小文件目录 下面是源码 split.php <?php $fp = fopen("socket.zip", "rb"); $filesize = 10; $i = 0; $no = 1; wh

  • 解决python将xml格式文件转换成txt文件的问题(xml.etree方法)

    概述 先来介绍一下xml格式的文件,从数据分析的角度去看xml格式的数据集,具有以下的优点开放性(能在任何平台上读取和处理数据,允许通过一些网络协议交换xml数据).简单性(纯文本,能在不同的系统之间交换数据).结构和内容分离(不同于HTML,数据的显示和数据本身是分开的).可扩展性(派生出其他标记语言) 问题描述 那么我们在进行数据分析的时候,如何运用xml里面的数据呢? 我们就需要将这类文件转化成其他类型的文件. (其实我认为说成提取xml的数据组成新的类型文件比较好一点) 就我个人的观点,

  • Linux中split大文件分割和cat合并文件详解

    前言 当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输.这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件. 1. 分割文件 文件分割可以使用split命令,该即支持文本文件分割,又支持二进制文件分割:而合并文件可以使用cat命令. 1.1 文本文件分割 分割文本文件时,可以按文件大小分割,也可以按文本行数分割. 按文件大小分割 按文件大小分割文件时,需要以-C参数指定分割后的文件大小: $ split -C

  • 利用python将json数据转换为csv格式的方法

    假设.json文件中存储的数据为: {"type": "Point", "link": "http://www.dianping.com/newhotel/22416995", "coordinates": [116.37256372996957, 40.39798447055443], "category": "经济型", "name": &qu

  • python实现任意位置文件分割的实例

    应用场景 在嵌入式开发中,常常需要将一个binary文件分割成多个文件,或者将一个binary的某块区域抓成一个单独文件.本篇blog以python为例,实现了以上需求; 实现代码 #!/usr/bin/python """ ./file_split.py, just for testing; """ import sys import os import re from os.path import join from array import

  • Python无权点文件转化成邻接矩阵方式

    目录 将无权点文件转化成邻接矩阵 邻接矩阵的COO格式 总结 将无权点文件转化成邻接矩阵 目前点文件是两列Excel代码,在进行复杂网络运算时需要转化成邻接矩阵. 我在网上找了一个代码,稍微修改了下,亲测可以成功转化. import csv import numpy as np import pandas as pd import networkx as nx import matplotlib.pyplot as plt f = open('D:/ii/R/C3000.csv') #数据两列(

  • java 文件流的处理方式 文件打包成zip

    目录 java 文件流的处理 文件打包成zip 1.下载文件到本地 2.java后端下载 3.文件打包成zip 后台多文件打包成zip返回流 前台提供按钮一键下载 java 文件流的处理 文件打包成zip 1.下载文件到本地 public void download(HttpServletResponse response){ String filePath ="";//文件路径 String fileName ="";//文件名称 // 读到流中 InputStr

  • 利用python将xml文件解析成html文件的实现方法

    功能就是题目所述,我的python2.7,装在windows环境,我使用的开发工具是wingide 6.0 1.首先是我设计的简单的一个xml文件,也就是用来解析的源文件 下面是这个文件website.xml内容: <website> <page name="index" title="fuckyou"> <h1>welcome to</h1> <p>this is a moment</p> &

随机推荐