pandas批量导入csv文件

博客介绍了使用pandas导入CSV文件的方法,包括导入单个CSV文件时的绝对路径和相对路径方式,以及批量导入CSV文件的相关内容,聚焦于信息技术领域的数据处理操作。

导入单个csv文件

绝对路径

import pandas as pd
import numpy as np
import os

data = pd.read_csv('C:/Users/Administrator/Desktop/test/1.csv',sep = ',',encoding = 'gb18030')
data.head()

相对路径

import pandas as pd
import numpy as np
import os

os.chdir('C:/Users/Administrator/Desktop/test/')
os.getcwd()
data = pd.read_csv('1.csv',sep = ',',encoding = 'gb18030')
data.head()

批量导入csv文件

import pandas as pd
import numpy as np
import os

os.chdir('C:/Users/Administrator/Desktop/test/')
file_chdir = os.getcwd()

filecsv_list = []
for root,dirs,files in os.walk(file_chdir):
    for file in files:
        if os.path.splitext(file)[1] == '.csv':
            filecsv_list.append(file)

data = pd.DataFrame()
for csv in filecsv_list:
    data = data.append(pd.read_csv(csv,header = 0,sep=None,encoding='gb18030'))

data.to_csv('ALL.csv',index=0)    

 

### ClickHouse 批量导入 CSV 文件 为了实现批量导入CSV文件至ClickHouse数据库,可以利用`clickhouse-client`命令行工具或通过编程接口来完成这一操作。下面展示了一种基于Shell脚本的方式来进行批处理作业。 #### Shell 脚本示例 此脚本会遍历指定目录下的所有`.csv`文件,并依次将其内容插入到名为`test_table`的目标表中: ```bash #!/bin/bash # 设置变量 TABLE_NAME="test_table" DB_NAME="default" FILES_PATH="/path/to/csv/files/*.csv" for file in $FILES_PATH; do [[ -f "$file" ]] || break # 如果没有匹配的文件则退出循环 echo "Processing $file..." cat "$file" | clickhouse-client \ --database="$DB_NAME" \ --query="INSERT INTO ${TABLE_NAME} FORMAT CSV" done ``` 上述代码片段展示了如何使用管道符(`|`)将CSV文件的内容传递给`clickhouse-client`命令并指定了输入格式为CSV[^1]。 对于更复杂的场景,比如当CSV文件中含有特殊字符或者其他不符合预期的情况时,则可能需要先对原始数据做一些预处理工作再进行加载;另外也可以考虑采用Python等高级语言结合相应的库函数来增强灵活性与可维护性。 #### Python 脚本示例 (适用于复杂情况) 如果面对的是更为复杂的任务需求,例如存在多列类型转换、缺失值填充等问题,则推荐使用Python配合pandas库以及官方提供的API来做进一步优化: ```python import os from glob import iglob import pandas as pd from clickhouse_driver import Client client = Client('localhost') table_name = 'your_target_table' db_name = 'default' def process_csv(file_path): df = pd.read_csv(file_path, dtype=str) # 将所有字段都作为字符串读入以防止自动推断错误 # 可根据实际情况调整参数设置 data = df.values.tolist() client.execute(f'INSERT INTO {db_name}.{table_name} VALUES', data) files_pattern = '/path/to/csv/files/*.csv' for f in iglob(files_pattern): try: print(f'Importing {f}') process_csv(f) except Exception as e: print(f'Failed to import {f}: ', str(e)) ``` 这段Python程序能够更好地应对不同类型的CSV文件结构差异,并且提供了异常捕获机制以便于排查问题所在。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值