哈嘍大家好,我是鹹魚 相信小伙伴們在學習 python 數據分析的過程中或多或少都會聽說或者使用過 pandas pandas 是 python 的一個拓展庫,常用於數據分析 今天鹹魚將介紹幾個關於 pandas 導入數據的方法和技巧 ## 從 URL 獲取 csv 數據 關於 pandas 導入 ...
哈嘍大家好,我是鹹魚
相信小伙伴們在學習 python 數據分析的過程中或多或少都會聽說或者使用過 pandas
pandas 是 python 的一個拓展庫,常用於數據分析
今天鹹魚將介紹幾個關於 pandas 導入數據的方法和技巧
從 URL 獲取 csv 數據
關於 pandas 導入 csv 數據,使用的是下麵這個方法
pandas.read_csv()
但是這個方法可以通過 HTTP 從 URL 來獲取 CSV 數據
關於通過 HTTP 從 URL 來獲取 CSV 數據,我在之前的文章《為什麼訪問同一個網址卻返回不同的內容》有介紹過
例如下麵的例子將展示如何通過 URL 獲取 csv 文件
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)
通過 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/