吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 422|回复: 12
收起左侧

[资源求助] 求大佬帮忙处理大型csv文件

[复制链接]
Guo-Guo 发表于 2024-4-25 21:33
100吾爱币
本帖最后由 Guo-Guo 于 2024-4-25 21:40 编辑

https://www.123pan.com/s/bmrgjv-YfDCh.html提取码:J0Ov
求大佬帮忙用数据库把这个表格专利申请年为2023的数据筛出来吧
大概有200万条数据,直接用wps或者excel应该是不行的,会截断最后得不到完整数据,这种情况因为没有获得完整的数据不能获得悬赏哦,
现在应该是把csv导入数据库当中处理再导出为csv或xlsx格式
但我太菜了不太会,求大佬帮帮忙吧
秒结贴,求求了

最佳答案

查看完整内容

链接:https://pan.baidu.com/s/1W-HQWC4MG6Dv5LRbOwX1pw 提取码:0853 我验证了提取2021年的、也验证了提取2022年……代码都正确,就是没有2023年的

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shuisanyue 发表于 2024-4-25 21:33
链接:https://pan.baidu.com/s/1W-HQWC4MG6Dv5LRbOwX1pw
提取码:0853

我验证了提取2021年的、也验证了提取2022年……代码都正确,就是没有2023年的
 楼主| Guo-Guo 发表于 2024-4-25 21:37
追加为100吾爱币,之前币给少了,现在追加为100吾爱币
shuisanyue 发表于 2024-4-25 22:13
本帖最后由 shuisanyue 于 2024-4-25 22:14 编辑

在弄……

表格容量好大啊
 楼主| Guo-Guo 发表于 2024-4-25 22:29
shuisanyue 发表于 2024-4-25 22:13
在弄……

表格容量好大啊

嗯嗯麻烦大佬了,我尝试用pandas读了半个小时也没读完,估计只能用数据库了
 楼主| Guo-Guo 发表于 2024-4-25 23:03
顶一下顶一下
shuisanyue 发表于 2024-4-25 23:23
在处理呢,电脑慢……
shuisanyue 发表于 2024-4-26 01:53
import pandas as pd

def try_parse_date(date_str, date_formats):
    for date_format in date_formats:
        try:
            return pd.to_datetime(date_str, format=date_format)
        except ValueError:
            continue
    return None

# 定义文件路径
#input_file_path = r'D:\(ctx+PY\w200gb2312.csv'  # 请替换为实际的文件路径
input_file_path = r'D:\(ctx+PY\w200.csv'  # 请替换为实际的文件路径
output_file_path = r'D:\(ctx+PY\new2023_w200.csv'  # 请替换为实际的文件路径

# 设置分批读取的大小,根据你的内存大小调整
chunk_size = 5000

# 初始化已处理的行数
total_rows_processed = 0

# 可能的日期格式列表
date_formats = ['%Y-%m-%d', '%Y/%m/%d', '%Y.%m.%d', '%Y %m %d']

# 初始化分批读取的迭代器,使用UTF-8编码尝试读取
chunks = pd.read_csv(input_file_path, chunksize=chunk_size, encoding='UTF-8-SIG', low_memory=False)
#chunks = pd.read_csv(input_file_path, chunksize=chunk_size, encoding='Gb2312', low_memory=False)
#注意这里Gb2312编码测试你的csv表格部分数据是正确的,但是你提供的上市公司-专利明细数据.csv文件编码是UTF-8-SIG就有问题很奇怪!

# 初始化用于存储结果的DataFrame
df_result = pd.DataFrame()

# 逐块处理数据
for chunk_index, chunk in enumerate(chunks, start=1):
    # 尝试自动检测日期列
    date_col = None
    for col in chunk.columns:
        if pd.api.types.is_string_dtype(chunk[col]):
            chunk[col] = chunk[col].str.strip()  # 移除空白字符
            # 尝试解析每一列作为日期
            parsed_dates = chunk[col].apply(lambda x: try_parse_date(x, date_formats))
            if not parsed_dates.isnull().all():
                date_col = col
                break

    # 如果找到日期列,则筛选2023年的数据
    if date_col is not None:
        chunk_2023 = chunk[parsed_dates.dt.year == 2023]
        df_result = pd.concat([df_result, chunk_2023], ignore_index=True)
    else:
        print(f"在块 {chunk_index} 中未找到可解析的日期列。")

    # 更新已处理的行数并打印进度
    total_rows_processed += len(chunk)
    print(f"已处理到第 {total_rows_processed} 行...")

# 将结果写入新的CSV文件,使用UTF-8编码
if not df_result.empty:
    df_result.to_csv(output_file_path, index=False, encoding='UTF-8')
    print(f"处理完成,结果已保存至 {output_file_path}")
else:
    print("没有数据被写入输出文件。")

print(f"总共处理了 {total_rows_processed} 行数据。")
jyjjf 发表于 2024-4-26 07:13
自己用emedit处理大csv文件,软件里面csv可以切换到csv模式的,可以像excel一样筛选的,很方便的

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
Guo-Guo + 2 + 1 谢谢@Thanks!

查看全部评分

jyjjf 发表于 2024-4-26 07:18
wpsexcel不能处理是因为它们都有行数限制,最大只能1048576行
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 22:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表