首页 > 其他分享 >Pandas 加载数据的方法和技巧

Pandas 加载数据的方法和技巧

时间:2023-05-29 17:57:34浏览次数:63  
标签:技巧 name df com Pandas pd 数据 pandas 加载

哈喽大家好,我是咸鱼

相信小伙伴们在学习 python 数据分析的过程中或多或少都会听说或者使用过 pandas

pandas 是 python 的一个拓展库,常用于数据分析

今天咸鱼将介绍几个关于 pandas 导入数据的方法和技巧

从 URL 获取 csv 数据

关于 pandas 导入 csv 数据,使用的是下面这个方法

pandas.read_csv()

但是这个方法可以通过 HTTP 从 URL 来获取 CSV 数据

关于通过 HTTP 从 URL 来获取 CSV 数据,我在之前的文章《为什么访问同一个网址却返回不同的内容》有介绍过

例如下面的例子将展示如何通过 URL 获取 csv 文件
image

url = 'https://raw.githubusercontent.com/scikit-learn/scikit-learn/main/sklearn/datasets/data/boston_house_prices.csv'

df = pandas.read_csv(url)

通过 URL 来获取 CSV 数据,可以省去了需要先将 CSV 文件保存在本地这一步骤

从网站获取 HTML table 数据

pandas.read_html() 用于获取 HTML 文件中的 table 数据(即<table>标签的表格数据)

我们看下面的例子

import pandas as pd

url = 'http://weather.sina.com.cn/china/shanghaishi/'
df_tables = pd.read_html(url)
print(df_tables)

image
通过 pandas.read_html() 可以实现简易爬虫

JSON 数据格式化

有时候我们在处理 JSON 数据的时候,会发现 JSON 数据通常都是嵌套好多层

如果我们想要将 JSON 数据转换成表格数据,使其扁平化,我们可以用下面的方法来实现

pandas.json_normalize()

看下面的例子

impor pandas as pd

data =[
    {
      "id": "A001",
      "name": "咸鱼运维杂谈",
      "url": "https://www.cnblogs.com/edisonfish/",
      "likes": 61
    },
    {
      "id": "A002",
      "name": "Google",
      "url": "www.google.com",
      "likes": 124
    },
    {
      "id": "A003",
      "name": "淘宝",
      "url": "www.taobao.com",
      "likes": 45
    }
  ]

df = pd.json_normalize(data)
print(df)

结果如下

     id    name      url                                    likes
0  A001  咸鱼运维杂谈  https://www.cnblogs.com/edisonfish/    61
1  A002  Google      www.google.com                         124
2  A003   淘宝        www.taobao.com                         45

接下来,让我们尝试读取更复杂的 JSON 数据,该数据嵌套了列表和字典

import pandas as pd

data ={
    "school_name": "local primary school",
    "class": "Year 1",
    "info": {
      "president": "John Kasich",
      "address": "ABC road, London, UK",
      "contacts": {
        "email": "[email protected]",
        "tel": "123456789"
      }
    },
    "students": [
    {
        "id": "A001",
        "name": "Tom",
        "math": 60,
        "physics": 66,
        "chemistry": 61
    },
    {
        "id": "A002",
        "name": "James",
        "math": 89,
        "physics": 76,
        "chemistry": 51
    },
    {
        "id": "A003",
        "name": "Jenny",
        "math": 79,
        "physics": 90,
        "chemistry": 78
    }]
}


# 展平数据
df = pd.json_normalize(
    data,
    record_path =['students'],
    meta=[
        'class',
        ['info', 'president'],
        ['info', 'contacts', 'tel']
    ]
)
print(df)

结果如下

     id   name  math  ...   class  info.president info.contacts.tel
0  A001    Tom    60  ...  Year 1     John Kasich         123456789
1  A002  James    89  ...  Year 1     John Kasich         123456789
2  A003  Jenny    79  ...  Year 1     John Kasich         123456789

[3 rows x 8 columns]

从剪贴板获取数据

pandas 的 read_clipboard() 方法可以获取存储在剪贴板上的任何数据

假设你将数据从网上要复制粘贴到本地,那么用 pandas 的 read_clipboard() 方法可以直接读取剪贴板的内容

默认情况下采取正则表达式\s+ 作为分隔值的分隔符(即匹配一个或多个空格、制表符、换行符等空白字符作为分隔符),然后将剪贴板上的数据分割成表格数据

import pandas as pd

df = pd.read_clipboard()

print(df)

参考文章:https://jrashford.com/2022/08/02/loading-data-into-pandas-5-tips-and-tricks-you-may-or-may-not-know/

标签:技巧,name,df,com,Pandas,pd,数据,pandas,加载
From: https://www.cnblogs.com/edisonfish/p/17441220.html

相关文章

  • vim-一些小技巧
    在选中范围内替换先用v选中,按:进入替换模式。出现 ​:'<,'>​ 再输入 ​s/待替换/替换成/gc​ (c表示询问,y替换n不替换q不替换直接退出)。删除末尾的空格:%s/\s*空格/s表示重复多个空格,一直到行尾。添加括号括号两端带空格的,S+左括号,不带空格的,S+右括号。选中范......
  • 2023 年:公司如何为颠覆做好准备的技巧
    ​经济寒冬来临,倒挂的收益率曲线、持续上升的利率以及层出不穷的裁员公告等等,让经济学家们得出一个结论:全球经济正在衰退。然而,经济下行周期可能是卓越公司改变其命运的最佳时机。有研究表明,相对于非经济衰退时期,发展滞后的公司在经济衰退期间超越行业领先者的可能性将高出两倍......
  • 关于开发技巧
    在Java编程中,处理空参数并返回空值的技巧有以下几个:使用Optional类:Optional类是Java8引入的一个新特性。它可以简化代码,以优雅且类型安全的方式处理可能为空的值。您可以将输入参数封装到Optional对象中,并使用orElse()方法指定当值为空时返回的默认值。例如:publicStringg......
  • Git日常使用技巧 - 笔记
    Git日常使用技巧-笔记Git是目前世界上最先进的分布式版本控制系统学习资料廖雪峰学习视频https://www.bilibili.com/video/BV1pX4y1S7Dq/?spm_id_from=333.337.search-card.all.click&vd_source=2ac127043ccd79c92d5b966fd4a54cd7Git命令在线练习工具https......
  • 应用启动时加载application.properties配置文件
    配置aliyun.sms.regionId=defaultaliyun.sms.accessKeyId=LTAIxxxaliyun.sms.secret=PAxxxx importorg.springframework.beans.factory.InitializingBean;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Compone......
  • java——微服务——spring cloud——Eureka——ribbon负载均衡——饥饿加载
       ......
  • 掌握PHPcms采集技巧,轻松解决内容管理问题
    PHPcms是一款优秀的内容管理系统,它拥有强大的采集功能,可以轻松实现对目标网站的内容采集。本文将详细介绍PHPcms的content采集功能,包括如何进行配置、如何使用、以及常见问题解决方法等方面。1.配置在使用content采集功能之前,需要先进行一些配置操作。首先,在后台管理界面进入“......
  • LabVIEW|小技巧:While循环结构加上时间延时可降低CPU资源利用率
    笔者在用LabVIEW编程的时候,用到while循环结构时,除了添加必要的停止标志外,经常忘记加上一个时间延时,这种做法不可取,While死循环会大量消耗CPU,一般5个While死循环就足以占用接近百分百的CPU。这是一个的情况:多加几个,CPU利用率激增,程序可能崩了:查看计数i的值,变化非常快:加上1ms的延时后......
  • 【pandas基础】--数据类型
    数据类型是计算机编程中将不同类型的数据值分类和定义的方式。通过数据类型,可以确定数据的存储方式和内存占用量,了解不同类型的数据进行各种运算的能力。使用pandas进行数据分析时,最常用到的几种类型是:字符串类型,各类文本内容都是字符串类型数值类型,包括整数和浮点数,可用于计......
  • Spring源码分析-BeanDefination加载
    ConfigurationClassPostProcessor解析配置类中有两类集合,一类是配置类、另一类是所有已解析的bd从已有bd中过滤配置类​ candidateNames:保存已被解析出来的所有待解析的bd名​ configCandidates:candidateNames经过过滤的所有待解析的配置类bd​ 过滤条件:​ 检查BeanDefi......