CSV – 在 Python 中处理本地和远程文件

csv - 在 python 中处理本地和远程文件

编码员们大家好!

本文介绍了一个开源工具,它能够处理本地和远程 csv 文件、加载和打印信息,然后将列映射到 django 类型。当数据集变大、excel不支持自定义报告或通过数据表进行完整数据操作时,通常需要处理csv文件,并且需要api。
当前的功能列表可以进一步扩展,以将 csv 文件映射到数据库表/模型并完全生成仪表板 web 应用程序。

源代码:appseed 服务的 csv 处理器部分(开源)

在开始讲解代码和用法之前,我们先总结一下工具的特点:

加载本地和远程文件打印值打印检测到的列类型将映射类型打印到 django 模型

按照 readme 中的说明克隆项目源并使其可用后,可以通过 cli 执行 csv 解析器。安装完成后,我们可以使用以下一行代码调用 cvs 处理器:

$ python manage.py tool_inspect_source -f media/tool_inspect/csv_inspect.json

该工具执行以下任务:

验证输入找到 csv 文件(如果找不到则错误退出)加载信息并检测列类型检测 django 列类型 打印前 10 行

同样可以应用于本地和远程文件。例如,我们可以通过运行这个单行代码来分析臭名昭著的 titanic.cvs:

$ python manage.py tool_inspect_source -f media/tool_inspect/csv_inspect_distant.json# output> processing .mediatool_inspectcsv_inspect_distant.json    |-- file: https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv    |-- type: csvfield        csv type    django types-----------  ----------  ------------------------------------------passengerid  int64       models.integerfield(blank=true, null=true)survived     int64       models.integerfield(blank=true, null=true)pclass       int64       models.integerfield(blank=true, null=true)name         object      models.textfield(blank=true, null=true)sex          object      models.textfield(blank=true, null=true)age          float64     models.floatfield(blank=true, null=true)sibsp        int64       models.integerfield(blank=true, null=true)parch        int64       models.integerfield(blank=true, null=true)ticket       object      models.textfield(blank=true, null=true)fare         float64     models.floatfield(blank=true, null=true)cabin        object      models.textfield(blank=true, null=true)embarked     object      models.textfield(blank=true, null=true)[1] - passengerid,survived,pclass,name,sex,age,sibsp,parch,ticket,fare,cabin,embarked[2] - 1,0,3,"braund, mr. owen harris",male,22,1,0,a/5 21171,7.25,,s[3] - 2,1,1,"cumings, mrs. john bradley (florence briggs thayer)",female,38,1,0,pc 17599,71.2833,c85,c[4] - 3,1,3,"heikkinen, miss. laina",female,26,0,0,ston/o2. 3101282,7.925,,s[5] - 4,1,1,"futrelle, mrs. jacques heath (lily may peel)",female,35,1,0,113803,53.1,c123,s[6] - 5,0,3,"allen, mr. william henry",male,35,0,0,373450,8.05,,s[7] - 6,0,3,"moran, mr. james",male,,0,0,330877,8.4583,,q[8] - 7,0,1,"mccarthy, mr. timothy j",male,54,0,0,17463,51.8625,e46,s[9] - 8,0,3,"palsson, master. gosta leonard",male,2,3,1,349909,21.075,,s[10] - 9,1,3,"johnson, mrs. oscar w (elisabeth vilhelmina berg)",female,27,0,2,347742,11.1333,,s... (truncated output)  

以下是该工具的相关部分:

立即学习“Python免费学习笔记(深入)”;

加载信息并事先检查源是本地还是远程

    print( '> processing ' + arg_json )    print( '    |-- file: ' + json_data['source'] )    print( '    |-- type: ' + json_data['type'  ] )    print( 'n')    tmp_file_path = none     if 'http' in json_data['source']:        url = json_data['source']        r = requests.get(url)        tmp_file = h_random_ascii( 8 ) + '.csv'        tmp_file_path = os.path.join( dir_tmp, tmp_file )        if not file_write(tmp_file_path, r.text ):            return        json_data['source'] = tmp_file_path    else:            if not file_exists( json_data['source'] ):            print( ' > err loading source: ' + json_data['source'] )                        return    csv_types = parse_csv( json_data['source'] )

分析标头并将检测到的类型映射到 django 类型。

对于表格视图,使用 tabulate library:

    csv_types = parse_csv( json_data['source'] )    #pprint.pp ( csv_types )    table_headers = ['field', 'csv type', 'django types']    table_rows    = []    for t in csv_types:        t_type        = csv_types[t]['type']        t_type_django = django_fields[ t_type ]        table_rows.append( [t, t_type, t_type_django] )    print(tabulate(table_rows, table_headers))

最后一步是打印csv数据

    csv_data = load_csv_data( json_data['source'] )    idx = 0    for l in csv_data:        idx += 1        print( '['+str(idx)+'] - ' + str(l) )          # truncate output ..        if idx == 10:            print( ' ... (truncated output) ' )             break 

此时,代码为我们提供了获取 csv 信息、数据类型以及 django 对应的数据类型的权限。该映射可以轻松扩展为任何框架,如 flask、express 或 nextjs。

django 的类型映射是这样的:

# Pandas Typedjango_fields = {    'int'           : 'models.IntegerField(blank=True, null=True)',    'integer'       : 'models.IntegerField(blank=True, null=True)',    'string'        : "models.TextField(blank=True, null=True)",    'string_unique' : "models.TextField(blank=True, null=False, unique=True)",    'object'        : "models.TextField(blank=True, null=True)",    'object_unique' : "models.TextField(blank=True, null=False, unique=True)",    'int64'         : 'models.IntegerField(blank=True, null=True)',    'float64'       : 'models.FloatField(blank=True, null=True)',    'bool'          : 'models.BooleanField(null=True)',}

此工具正在积极开发中,以下是后续步骤:

将该工具连接到更多数据源,例如远程/本地数据库(sqlite、mysql、pgsql)、json 为任何框架生成模型:fastapi、flask、express、nextjs在顶部生成安全的 api 使用 tailwind/bootstrap 生成服务器端分页数据表进行样式化

感谢您的阅读!

对于那些有兴趣做出贡献的人,请随时加入新的 appseed 平台并在 discord 上与社区联系:

appseed – 面向开发者的开源平台appseed 社区 – 3k+ discord 成员

以上就是CSV – 在 Python 中处理本地和远程文件的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 12:54:08
下一篇 2025年12月13日 12:54:22

相关推荐

  • 使用 FastAPI 构建 Todo API 的部分:分步指南

    使用 fastapi 构建 todo api:分步指南 代码可以在这里找到:github – jamesbmour/blog_tutorials: 一、简介 在上一篇文章中,我们介绍了fastapi并建立了基本的项目结构。现在,我们将更进一步,构建一个功能性的 todo api。在本教程…

    2025年12月13日
    000
  • Python-Jira 票证管理

    您好,我刚刚发现了 jira lib,我决定对其进行测试,以找到获得最多门票的人。 我的github中的代码:https://github.com/victordalet/jira_python_test 一、安装 你只需要python并安装jira lib。 pip install jira 二 …

    2025年12月13日
    000
  • 如何使用一个 API 创建 AI 聊天机器人来访问多个 LLM

    最初由 liz acosta 发表在 streamlit 博客上 还记得第一次使用人工智能图像生成器有多酷吗?那两千万根手指和噩梦般的吃意大利面的画面不仅仅是有趣,它们在不经意间透露了哎呀!人工智能模型的智能程度与我们一样。和我们一样,他们也很难画手。 人工智能模型很快变得更加复杂,但现在的模型数量…

    2025年12月13日
    000
  • 使用 pip-abandoned 识别废弃的 PyPI 包

    我们通常要避免在应用程序中依赖废弃和弃用的软件包。 pip-abandoned 可以帮助解决这个问题。在某些打包生态系统中,注册表允许您将包标记为已弃用或放弃。例如在 npm 中: 和Packagist: 这还允许包管理器使用此元数据在安装时提供警告: PyPI没有这个概念。注册表不提供任何方法来放…

    2025年12月13日 好文分享
    000
  • 感觉没有动力

    感觉自己像个菜鸟,放弃了几次。 我第一次开始考虑编码是在我还是个孩子的时候,但我选择成为一名社交蝴蝶,现在我已经 26 岁了,尝试了很多次学习编码 python、JS、React、DB 等等,但是最后,我感到不知所措,放弃了。 现在,正因为如此,我感觉自己像个失败的松手,我想解决这个问题。关于如何做…

    2025年12月13日
    000
  • 掌握 Django:从头开始构建安全的用户身份验证 API

    “## 第四天#100daysofMiva 编码挑战赛已经进行四天了。 ??? ? 深入了解 django:从头开始构建安全的用户身份验证 api! 您准备好将您的 Django 技能提升到新水平了吗? ? 在本教程中,我将指导您使用 Django 创建强大的用户身份验证 API。无论您…

    2025年12月13日 好文分享
    000
  • Python 教程 – 简介

    python 是目前最流行的编程语言之一,尤其是随着人工智能技术的兴起。 python 是一种多用途编程语言,用于开发 web 应用程序、后端服务、数据科学和机器学习等许多东西。 设置 这些是使用 python 编码的准备工作: 下载python然后安装。您可以使用任何文本编辑器来编写 python…

    2025年12月13日
    000
  • 每周挑战

    穆罕默德·s·安瓦尔 (mohammad s. anwar) 每周都会发出“每周挑战”,为我们所有人提供了为两周任务提出解决方案的机会。我的解决方案首先用python编写,然后转换为perl。这对我们所有人来说都是练习编码的好方法。 挑战,我的解决方案 任务 1:唯一编号 任务 给你一个整数数组@i…

    2025年12月13日
    000
  • 如何使用 Python 自动下载图像:综合指南

    在当今的数字时代,以编程方式管理和处理图像可以为您节省大量的时间和精力。如果您希望自动化从网络下载图像的过程,那么您来对地方了。在本文中,我们将深入研究一个使用 pexels api(高质量库存照片的流行来源)来完成此操作的 python 脚本。 概述此处提供的 python 脚本允许您根据查询在 …

    2025年12月13日
    000
  • 硒 python 和 docker

    嗨,我展示了如何在 docker 容器中使用 selenium (或 undetected_chromedriver)。 我——dockerfile 我正在使用 docker python 图像并添加 chromdriver 和 chromium 来浏览网站。 第一步是创建requirements.…

    2025年12月13日
    000
  • 矢量视觉:改变您的本地图像搜索

    Vector Vision 是一款桌面应用程序,旨在简化用户搜索和管理本地图像集合的方式,利用技术提供直观、高效的体验,而无需互联网连接。该应用程序采用Python和Qt5作为其核心功能,而ChromaDB则增强了其图像搜索功能。 核心特性和技术见解 Vector Vision 的主要功能之一是其多…

    2025年12月13日
    000
  • 亚马逊产品数据集

    嗨,我在 kaggle 中找到了亚马逊产品的数据集,并决定找到价格和星级之间的关系。 完整代码:https://github.com/victordalet/kaggle_analysis/tree/feat/amazon_products i-准备数据 为此,我使用 sqlalchemy 将 cs…

    2025年12月13日
    000
  • Tensorflow 音乐预测

    在本文中,我展示了如何使用张量流来预测音乐风格。在我的示例中,我比较了电子音乐和古典音乐。 你可以在我的github上找到代码:https://github.com/victordalet/sound_to_partition i – 数据集 第一步,您需要创建一个数据集文件夹,并在里面…

    2025年12月13日
    000
  • ROBOFLOW – 使用 python 进行训练和测试

    roboflow 是一个用于注释图像以用于对象检测 ai 的平台。 我将这个平台用于 c2smr c2smr.fr,我的海上救援计算机视觉协会。 在本文中,我将向您展示如何使用这个平台并使用 python 训练您的模型。 您可以在我的github上找到更多示例代码:https://github.co…

    2025年12月13日
    000
  • 数据工程终极指南

    数据工程是设计和构建大规模收集、存储和分析数据的系统的实践。这是一个广泛的领域,几乎在每个行业都有应用。本文旨在提供有关如何成为一名数据工程师的分步指南。大多数数据工程师都拥有计算机科学或相关领域的学士学位背景,教授云计算、编码技能和数据库设计等基础知识。要成为一名数据工程师,首先应该专注于培养数据…

    2025年12月13日
    000
  • python+scrapy爬虫教程

    Scrapy 是一款强大的 Python 爬虫框架,用于抓取网站数据,包括结构化和非结构化数据。其安装步骤包括:1. pip install scrapy;2. 创建项目:scrapy startproject myproject;3. 创建爬虫:在 myproject/spiders 文件夹下创建…

    2025年12月13日
    000
  • 爬虫python教程迅雷下载

    要使用 Python 爬虫下载迅雷资源,需要:1. 安装库;2. 获取资源链接;3. 解析页面内容;4. 提取下载链接;5. 下载资源。具体步骤如下:1. 安装必要的库;2. 从迅雷网站获取资源链接;3. 使用 BeautifulSoup 解析页面内容;4. 使用正则表达式从 HTML 元素中提取迅…

    2025年12月13日
    000
  • python下载进度条怎么写代码

    Python 中进度条是使用 tqdm 库实现的,可用于在执行耗时操作时显示任务进度。通过安装 tqdm 并使用以下步骤创建进度条:创建一个代表任务的 range 对象(total)。使用 with tqdm(total=total) as progress_bar 创建一个进度条。遍历范围并调用 …

    2025年12月13日
    000
  • 机器学习中的标签编码

    标签编码是机器学习中最常用的技术之一。它用于将分类数据转换为数字形式。因此,数据可以拟合到模型中。 让我们了解为什么我们使用标签编码。想象一下,数据包含字符串 形式的基本列。但是,您无法将这些数据放入模型中,因为建模仅适用于数值数据,我们该怎么办?这是一种挽救生命的技术,当我们准备好数据进行拟合时,…

    2025年12月13日
    000
  • 推荐:《Python实践实验室》课程

    您是否希望提高 python 编程技能并应对现实世界的挑战? labex 提供的 python 实践实验室课程就是您的最佳选择。这门综合课程旨在指导您完成一系列实践项目,使您成为一名熟练的 python 程序员。 深入 Python 的深处 通过本课程,您将有机会探索各种 Python 编程概念和技…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信