【pandas基礎】--數據讀取

来源:https://www.cnblogs.com/wang_yb/archive/2023/05/04/17371731.html
-Advertisement-
Play Games

數據讀取是第一步,只有成功載入數據之後,後續的操作才有可能。 pandas可以讀取和導入各種數據格式的數據,如CSV,Excel,JSON,SQL,HTML等,不需要手動編寫複雜的讀取代碼。 1. 各類數據源 pandas提供了導入各類常用文件格式數據的介面,這裡介紹3種最常用的載入數據的介面。 1 ...


數據讀取是第一步,只有成功載入數據之後,後續的操作才有可能。

pandas可以讀取和導入各種數據格式的數據,如CSV,Excel,JSON,SQL,HTML等,不需要手動編寫複雜的讀取代碼。

1. 各類數據源

pandas提供了導入各類常用文件格式數據的介面,這裡介紹3種最常用的載入數據的介面。

1.1 從 CSV 文件讀取數據

讀取csv文件的介面:read_csv()

import pandas as pd

# 此csv中包含一些中國人口的統計信息
df = pd.read_csv("/path/to/china-population.csv")

df.head() # 顯示前5條數據

image.png

1.2 從 excel 文件讀取數據

讀取excel文件的介面:read_excel ()
讀取excel文件時,預設讀取第一個sheet中的數據。

import pandas as pd

# 此excel中的數據與上面csv文件中的一樣
df = pd.read_excel("/path/to/china-population.xlsx")

df.head() # 顯示前5條數據

image.png

1.3 從網路中讀取數據

除了從本地文件中讀取數據之外,read_csvread_excel也可以直接從URL讀取數據。
比如,上面的csv文件和excel文件可以從下麵的地址下載。
http://databook.top:8888/pandas/china-population.csv
http://databook.top:8888/pandas/china-population.xlsx

可以直接將URL傳給 read_csvread_excel,不用下載保存本地。

import pandas as pd

df = pd.read_csv("http://databook.top:8888/pandas/china-population.csv")
df_excel = pd.read_excel("http://databook.top:8888/pandas/china-population.xlsx")

2. 不同分隔符

csv 文件中預設用逗號,分隔不同的欄位,不過,也有很多csv文件不用逗號分隔,用其他生僻的符號來分隔。

import pandas as pd

df = pd.read_csv("http://databook.top:8888/pandas/china-population-sep.csv")
df.head()

image.png
文件china-population-sep.csv|來分隔不同的欄位,直接讀取的話,變成只有一個欄位。

這時,要明確設置分隔符。

import pandas as pd

df = pd.read_csv("http://databook.top:8888/pandas/china-population-sep.csv", sep="|")
df.head()

image.png
這樣就得到了正確的數據結構。

3. 設置列名稱

除了可以設置分隔符之外,讀取數據時,也可以設置列的名稱。
上面的例子中,列的名稱都是字母的縮寫,讀取文件時可以替換成中文名稱。

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    names=["年份數字", "年份", "指標編碼", "指標名稱", "人口數"],
)
df.head()

image.png

通過names參數設置列的名稱,names參數是個列表,其中元素的個數一般與列的數目保持一致。
如果names中元素個數少於列的數目,那麼多出來的列會作為索引(關於索引index,後續會詳細介紹)。

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    names=["指標編碼", "指標名稱", "人口數"],
)
df.head()

image.png

如果 names中元素個數多於列的數目,多出來的元素作為新增的空白列。

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    names=["年份數字", "年份", "指標編碼", "指標名稱", "人口數", "列名稱", "列名稱2"],
)
df.head()

image.png

上面的例子中,我們應該發現了一個問題,設置 names作為新的列名稱之後,原有的列名稱被當成了實際的數據。
也就是:
image.png

設置新的列名稱時,如果數據中包含列名稱的話,需要忽略掉這個名稱。
設置 header=0,忽略作為標題的第一行。
如果文件本來就沒有標題的話,設置 header=None

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    header=0,
    names=["年份數字", "年份", "指標編碼", "指標名稱", "人口數"],
)
df.head()

image.png

4. 隨機生成數據

pandas支持從很多數據源讀取數據,不過,有時候我們只想嘗試嘗試 pandas中的一些方法,並不想創建數據源。

這時,可以通過 numpy包創建一個隨機的二維矩陣,直接將這個二維矩陣的數據導入 pandas即可。
下麵的例子創建了一個10行3列的數據集。

import pandas as pd
import numpy as np

data = np.random.rand(10,3)
df = pd.DataFrame(data, columns=["data1", "data2", "data3"])
df.head()

image.png

通過臨時創建的隨機數據,可以嘗試 pandas提供的各類介面。

5. 總結回顧

本篇了主要介紹了數據的讀取方法,重點介紹的是 csv 文件的讀取方式,因為這是最常用的數據源。
其他數據源的讀取方式也大同小異,各種數據源的差異會體現在不同介面的參數上。

本文所用到的數據:

  1. http://databook.top:8888/pandas/china-population.csv
  2. http://databook.top:8888/pandas/china-population-sep.csv
  3. http://databook.top:8888/pandas/china-population.xlsx

本文關聯的微信視頻號短視頻:
pandas01-數據讀取.png


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 雖然現在IDE很強大又很智能,但是平常隨意寫點練手的代碼的時候,直接在命令行中使用vim和java命令更為方便快捷,可以做到無滑鼠純鍵盤的操作。 首先保證將java相關指令添加到了環境變數中; 1.編譯class文件: javac -d ./ Test.java 編譯好的class文件會放置到環境當 ...
  • Java讀取資料庫表(二) application.properties db.driver.name=com.mysql.cj.jdbc.Driver db.url=jdbc:mysql://localhost:3306/easycrud?useUnicode=true&characterEnco ...
  • 在之前的文章中,我們已經對 `bean` 的準備工作進行了講解,包括 `bean` 定義和 `FactoryBean` 判斷等。在這個基礎上,我們可以更加深入地理解 `getBean` 方法的實現邏輯,併在後續的學習中更好地掌握`createBean` 方法的實現細節。 ...
  • 背景說明 最近在做財務相關的系統,對賬單核銷預付款從技術角度來看就是將兩個數組進行合併 對賬單核銷預付款前提條件: 對賬單總金額必須等於未核銷金額 數據示例 對賬單數據 | 單號 | 金額 | | | | | B0001 | 100 | | B0002 | 80 | | B0003 | 120 | ...
  • 軟體:idea 我是先建立了一個空白的項目,自己創建的src包和其下麵的包。 **問題一:**建立包之後發現格式為src.com.tjp.bean 沒辦法建立其他與bean同級的service test utils view 等。只允許繼續建立bean的子包。 解決: 這是因為idea自動會摺疊空白 ...
  • 教程簡介 Python由荷蘭數學和電腦科學研究學會的吉多·範羅蘇姆於1990年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平臺上寫腳本和快速開發應用的編程語言, [2] ...
  • 教程簡介 Windows 10入門教程 - 從簡單的步驟瞭解Windows 10,從基本到高級概念,包括概述,安裝,入門,GUI基礎知識,導航,開始菜單,任務欄,平板電腦模式,文件資源管理器,Cortana,通知,快速操作,雲,通用應用程式,多個桌面,用戶管理,安全性,家長控制,應用程式,Web瀏覽 ...
  • 併發編程是指在程式中使用多線程技術來實現並行處理的能力。多線程機制使得程式可以分解成互不幹擾的任務,從而提高了程式執行的效率。併發編程可以通過對線程的創建,管理和協作進行控制,以實現更加高效的併發執行。併發編程的優點包括:① 提高程式執行效率:通過多線程並行處理,程式的處理速度可以顯著提高。② 增強... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...