資料讀取是第一步,只有成功加載資料之后,后續的操作才有可能,
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條資料

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條資料

1.3 從網路中讀取資料
除了從本地檔案中讀取資料之外,read_csv和 read_excel也可以直接從URL讀取資料,
比如,上面的csv檔案和excel檔案可以從下面的地址下載,
http://databook.top:8888/pandas/china-population.csv
http://databook.top:8888/pandas/china-population.xlsx
可以直接將URL傳給 read_csv和 read_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()

檔案china-population-sep.csv用 |來分隔不同的欄位,直接讀取的話,變成只有一個欄位,
這時,要明確設定分隔符,
import pandas as pd
df = pd.read_csv("http://databook.top:8888/pandas/china-population-sep.csv", sep="|")
df.head()

這樣就得到了正確的資料結構,
3. 設定列名稱
除了可以設定分隔符之外,讀取資料時,也可以設定列的名稱,
上面的例子中,列的名稱都是字母的縮寫,讀取檔案時可以替換成中文名稱,
import pandas as pd
df = pd.read_csv(
"http://databook.top:8888/pandas/china-population-sep.csv",
sep="|",
names=["年份數字", "年份", "指標編碼", "指標名稱", "人口數"],
)
df.head()

通過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()

如果 names中元素個數多于列的數目,多出來的元素作為新增的空白列,
import pandas as pd
df = pd.read_csv(
"http://databook.top:8888/pandas/china-population-sep.csv",
sep="|",
names=["年份數字", "年份", "指標編碼", "指標名稱", "人口數", "列名稱", "列名稱2"],
)
df.head()

上面的例子中,我們應該發現了一個問題,設定 names作為新的列名稱之后,原有的列名稱被當成了實際的資料,
也就是:

設定新的列名稱時,如果資料中包含列名稱的話,需要忽略掉這個名稱,
設定 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()

4. 隨機生成資料
pandas支持從很多資料源讀取資料,不過,有時候我們只想嘗試嘗試 pandas中的一些方法,并不想創建資料源,
這時,可以通過 numpy包創建一個隨機的二維矩陣,直接將這個二維矩陣的資料匯入 pandas即可,
下面的例子創建了一個10行3列的資料集,
import pandas as pd
import numpy as np
data = https://www.cnblogs.com/wang_yb/archive/2023/05/04/np.random.rand(10,3)
df = pd.DataFrame(data, columns=["data1", "data2", "data3"])
df.head()

通過臨時創建的隨機資料,可以嘗試 pandas提供的各類介面,
5. 總結回顧
本篇了主要介紹了資料的讀取方法,重點介紹的是 csv 檔案的讀取方式,因為這是最常用的資料源,
其他資料源的讀取方式也大同小異,各種資料源的差異會體現在不同介面的引數上,
本文所用到的資料:
- http://databook.top:8888/pandas/china-population.csv
- http://databook.top:8888/pandas/china-population-sep.csv
- http://databook.top:8888/pandas/china-population.xlsx
本文關聯的微信視頻號短視頻:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/551601.html
標籤:其他
上一篇:一文吃透Tomcat核心知識點
下一篇:返回列表
