翼度科技»论坛 编程开发 python 查看内容

Pandas 加载数据的方法和技巧

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
哈喽大家好,我是咸鱼
相信小伙伴们在学习 python 数据分析的过程中或多或少都会听说或者使用过 pandas
pandas 是 python 的一个拓展库,常用于数据分析
今天咸鱼将介绍几个关于 pandas 导入数据的方法和技巧
从 URL 获取 csv 数据

关于 pandas 导入 csv 数据,使用的是下面这个方法
  1. pandas.read_csv()
复制代码
但是这个方法可以通过 HTTP 从 URL 来获取 CSV 数据
关于通过 HTTP 从 URL 来获取 CSV 数据,我在之前的文章《为什么访问同一个网址却返回不同的内容》有介绍过
例如下面的例子将展示如何通过 URL 获取 csv 文件
  1. url = 'https://raw.githubusercontent.com/scikit-learn/scikit-learn/main/sklearn/datasets/data/boston_house_prices.csv'
  2. df = pandas.read_csv(url)
复制代码
通过 URL 来获取 CSV 数据,可以省去了需要先将 CSV 文件保存在本地这一步骤
从网站获取 HTML table 数据

pandas.read_html() 用于获取 HTML 文件中的 table 数据(即[table]标签的表格数据)
我们看下面的例子
  1. import pandas as pd
  2. url = 'http://weather.sina.com.cn/china/shanghaishi/'
  3. df_tables = pd.read_html(url)
  4. print(df_tables)
复制代码

通过 pandas.read_html() 可以实现简易爬虫
JSON 数据格式化

有时候我们在处理 JSON 数据的时候,会发现 JSON 数据通常都是嵌套好多层
如果我们想要将 JSON 数据转换成表格数据,使其扁平化,我们可以用下面的方法来实现
  1. pandas.json_normalize()
复制代码
看下面的例子
  1. impor pandas as pd
  2. data =[
  3.     {
  4.       "id": "A001",
  5.       "name": "咸鱼运维杂谈",
  6.       "url": "https://www.cnblogs.com/edisonfish/",
  7.       "likes": 61
  8.     },
  9.     {
  10.       "id": "A002",
  11.       "name": "Google",
  12.       "url": "www.google.com",
  13.       "likes": 124
  14.     },
  15.     {
  16.       "id": "A003",
  17.       "name": "淘宝",
  18.       "url": "www.taobao.com",
  19.       "likes": 45
  20.     }
  21.   ]
  22. df = pd.json_normalize(data)
  23. print(df)
复制代码
结果如下
  1.      id    name      url                                    likes
  2. 0  A001  咸鱼运维杂谈  https://www.cnblogs.com/edisonfish/    61
  3. 1  A002  Google      www.google.com                         124
  4. 2  A003   淘宝        www.taobao.com                         45
复制代码
接下来,让我们尝试读取更复杂的 JSON 数据,该数据嵌套了列表和字典
  1. import pandas as pd
  2. data ={
  3.     "school_name": "local primary school",
  4.     "class": "Year 1",
  5.     "info": {
  6.       "president": "John Kasich",
  7.       "address": "ABC road, London, UK",
  8.       "contacts": {
  9.         "email": "admin@e.com",
  10.         "tel": "123456789"
  11.       }
  12.     },
  13.     "students": [
  14.     {
  15.         "id": "A001",
  16.         "name": "Tom",
  17.         "math": 60,
  18.         "physics": 66,
  19.         "chemistry": 61
  20.     },
  21.     {
  22.         "id": "A002",
  23.         "name": "James",
  24.         "math": 89,
  25.         "physics": 76,
  26.         "chemistry": 51
  27.     },
  28.     {
  29.         "id": "A003",
  30.         "name": "Jenny",
  31.         "math": 79,
  32.         "physics": 90,
  33.         "chemistry": 78
  34.     }]
  35. }
  36. # 展平数据
  37. df = pd.json_normalize(
  38.     data,
  39.     record_path =['students'],
  40.     meta=[
  41.         'class',
  42.         ['info', 'president'],
  43.         ['info', 'contacts', 'tel']
  44.     ]
  45. )
  46. print(df)
复制代码
结果如下
  1.      id   name  math  ...   class  info.president info.contacts.tel
  2. 0  A001    Tom    60  ...  Year 1     John Kasich         123456789
  3. 1  A002  James    89  ...  Year 1     John Kasich         123456789
  4. 2  A003  Jenny    79  ...  Year 1     John Kasich         123456789
  5. [3 rows x 8 columns]
复制代码
从剪贴板获取数据

pandas 的 read_clipboard() 方法可以获取存储在剪贴板上的任何数据
假设你将数据从网上要复制粘贴到本地,那么用 pandas 的 read_clipboard() 方法可以直接读取剪贴板的内容
默认情况下采取正则表达式\s+ 作为分隔值的分隔符(即匹配一个或多个空格、制表符、换行符等空白字符作为分隔符),然后将剪贴板上的数据分割成表格数据
  1. import pandas as pd
  2. df = pd.read_clipboard()
  3. print(df)
复制代码
参考文章:https://jrashford.com/2022/08/02/loading-data-into-pandas-5-tips-and-tricks-you-may-or-may-not-know/

来源:https://www.cnblogs.com/edisonfish/p/17441220.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具