Pandas數據讀取三連“坑”

互聯架構唠唠嗑 2024-06-02 12:00:44
引導

大家小時候有沒有用玩兒過一種飛行棋,兩個人玩兒,搖骰子搖到幾然後就相應的往前走幾步,看誰先到終點誰就勝利了。在玩兒的途中,地圖上有很多獎勵或者陷阱,有的時候運氣不好,連中好幾個陷阱不但沒有前進反而還後退了。

這不最近再看Pandas數據讀取的知識時候,我就踩了好幾個小坑,幸虧把學習文檔上的提供的demo進行了驗證,不然在以後項目應用的時候再遇到了豈不是挺尴尬了。

好了,讓我們走進數據讀取的數據大森林吧

提供

我們知道Pandas庫主要是數據讀取和數據清洗的。數據讀取的是否准確沒有遺漏這是非常重要的。之前我們有時候要讀取數據的時候手寫IO流進行讀取,也是挺麻煩的了,Pandas庫解決了我們這一部分的煩惱,給我們提供了非常豐富的讀取數據的函數。

針對數據存儲的格式不同,相應的讀取方式也是不同的。我們常用的有這麽幾種,簡單介紹一下:

read_csv()函數: 專門讀取.csv格式的文件。read_excel()函數:讀取excel格式的數據。read_sql()函數:在數據區讀取數據。read_json()函數:在json字符串中讀取數據。read_html()函數:專門讀取html頁面中的數據。

這些函數不是很難,傳遞的參數基本上都差不多都需要文件名,read_sql()函數函數比較特殊,因爲它是直接從數據庫讀取數據。

文件讀取方式就是這麽多。我們肯定得一一驗證,不然怎能發現其中是否有坑呢?就像電影的結局說的那樣 “法相在皮相之內,真身在假身之中”。

驗證

這裏爲了節約時間,其他的函數代碼直接驗證一筆帶過,相關代碼:

"""@Created on : 2024/5/30 10:27@creator : er_nao@File :pandas_07_常用函數.py@Description :"""import pandas as pdimport pymysql# 1.csvprint('使用csv')df1 = pd.read_csv('../property-data.csv')print(df1)print('\n')# 3.sqlprint('使用sql')# 設置數據庫連接參數db_connection = pymysql.connect(host='127.0.0.1', user='root', passwd='root', database='library', charset='utf8mb4')sql = "SELECT * FROM book_info"df3 = pd.read_sql(sql, db_connection)print(df3.to_string())# 4.jsonprint('使用json')df4 = pd.read_json('../list_json.json')print(df4.to_string())print('\n')# 輸出結果# 使用csv# PID ST_NUM ST_NAME OWN_OCCUPIED NUM_BEDROOMS NUM_BATH SQ_FT# 0 100001000.0 104.0 PUTNAM Y 3 1 1000# 1 100002000.0 197.0 LEXINGTON N 3 1.5 --### 使用sql## id name author publish isbn introduction language price publish_date type_id status# 0 1 西遊記 施耐庵 機械工業出版社 100011 師徒四人去西天取真經 中文 42.0 2020-03-20 1 0# 1 2 三國演義 羅貫中 清華大學出版社 100012 東漢末年分三國。。。 中文 48.0 2018-03-30 1 1## 使用json# school_name students# 0 ABC primary school Year 1 {'id': 'A001', 'name': 'Tom', 'math': 60, 'physics': 66, 'chemistry': 61}

可以看到,三種數據讀取的方法是沒問題的。還有兩個數據讀取的函數沒有驗證,我們意義驗證一下。

read_excel()函數 相關驗證結果:

看到這兒我就頭疼,既然這樣的話,我們就將單斜杠改成雙斜杠試試。

又是另外的問題,缺少openpyxl庫,唉。。。那就就繼續去裝庫吧。這個安裝很簡單我們就用pip安裝就行,相關命令:pip install openpyxl。安裝圖示:

好了,安裝完成了。回到編輯器中運行測試一下。正常輸入了,也不報錯了。嗯!控制台真是個好東西。

接下來我們看看read_html函數的表現。

這個函數也報錯了,但是這個報錯是不是似曾相識呢?沒錯跟read_excel函數的報錯信息很像,都是找不到相應的庫,既然這樣,我們就再把上面的裝庫步驟進行一遍呗。lxml庫的安裝相關命令: pip install lxml,安裝完成同樣我們可以在pip列表中看到。

回到我們的demo中重新運行程序。結果又報沒有html5lib庫因爲我們是直接獲取頁面上的數據的,頁面就是html,所以pyhton得進行解析。相關命令 pip install html5lib

再次運行我們的程序,是成功的。(PS:爲什麽之前的爬取鏈接和成功的爬取連接不一樣?因爲之前那個鏈接的頁面沒有表格數據,所以換了一下!)

作者:二鬧鏈接:https://juejin.cn/post/7374608035837198399

0 阅读:0

互聯架構唠唠嗑

簡介:感謝大家的關注