01寫在前面
大家好,我是陽哥,歡迎來到「Python數(shù)據(jù)之道」。
本次是《圖解Pandas》系列圖文內容的 第 02 篇,主要是對Pandas中 創(chuàng)建數(shù)據(jù)對象
進行介紹。
本文是付費閱讀文章,付費閱讀內容包括《圖解Pandas》圖文干貨內容、可以在電腦端觀看的視頻以及配套的源代碼等。
此外,為避免各種不必要的麻煩,微信沒有退款機制,本文也不會退款,付費前請謹慎。
Pandas 是 Python數(shù)據(jù)分析中用的最多的工具,為了大家能夠更好地學習 Pandas,陽哥開始制作一系列 《圖解Pandas》 的內容。
《圖解Pandas》 最主要的目標,是以動態(tài)圖片、視頻等方式呈現(xiàn),實現(xiàn)從原理步驟拆解 Pandas 在數(shù)據(jù)處理過程中的主要知識點,以便大家能進一步了解 Pandas 的使用,形象地介紹 Pandas,進而使大家喜歡上 Pandas 這個得心應手的工具。
《圖解Pandas》圖文專題,最新的內容可以點擊下面的圖片進行查看。
在本文編寫時,《圖解Pandas》系列已發(fā)布的圖文如下:
02Python環(huán)境
今天主要是對 Pandas 中 如何創(chuàng)建數(shù)據(jù)對象進行介紹。在微信視頻號「Python數(shù)據(jù)之道」中發(fā)布的視頻如下,視頻時長約4分30秒,大家可以前往觀看:
開始之前,按照慣例先介紹下本次內容涉及的Python環(huán)境,如下:
我是在 jupyter notebook 中運行代碼的,首先引入相關 Python 庫:
import pandas as pd
import numpy as np
print(f'pandas version:{pd.__version__}')
print(f'numpy version:{np.__version__}')
03Series
在Pandas中,主要包括兩種類型的數(shù)據(jù),一種是 Series
,另一種是 DataFrame
,DataFrame 中文翻譯稱之為“數(shù)據(jù)框”。創(chuàng)建數(shù)據(jù)對象也將圍繞這兩種數(shù)據(jù)類型來展開。
首先,咱們來學習如何創(chuàng)建 Series 數(shù)據(jù),常見的方法有以下幾種,根據(jù)不同的場景,選擇合適的使用即可。在代碼層面,一般是通過 pd.Series()
方法來實現(xiàn)。
通過列表創(chuàng)建 Series
第一種是通過列表創(chuàng)建Series,如圖所示,左邊為代碼,右邊為數(shù)據(jù)結果。
可以同時指定索引值。此外,還可以設置 name 參數(shù)值,以及其他的一些參數(shù)。
設置索引:
s2 = pd.Series([1,2,3],index=['a','b','c'])
s2
同時設置索引和name參數(shù):
s3 = pd.Series(
[1,2,3],
index=['a','b','c'],
name='hello'
)
s3
通過字典創(chuàng)建 Series
第二種是通過字典創(chuàng)建Series,從實現(xiàn)結果來看,字典中的key值為Series的索引。
通過 ndarray 創(chuàng)建 Series
第三種是通過 numpy
的 array
數(shù)據(jù)來創(chuàng)建 Series,這里通過 random
函數(shù)來創(chuàng)建一個一維array數(shù)據(jù),接著創(chuàng)建Series。
通過標量來創(chuàng)建 Series
第四種是通過標量來創(chuàng)建Series,所謂標量,也可以理解為是具體的單個數(shù)據(jù)。這里的標量為 1,通過設置索引的長度,可以控制創(chuàng)建數(shù)據(jù)的行數(shù)。
創(chuàng)建空的 Series
第五種是創(chuàng)建空的Series,這是一種特殊的方法,本身不會創(chuàng)建出具體的數(shù)據(jù)值,但空的Series也是有它特定的用途的。
04DataFrame
接下來,咱們來學習如何創(chuàng)建數(shù)據(jù)框,常用的方法有以下幾種。在代碼層面一般是通過 pd.DataFrame()
方法來實現(xiàn)。
創(chuàng)建空的 DataFrame
先來看如何創(chuàng)建空的數(shù)據(jù)框,代碼如下所示??盏臄?shù)據(jù)框,用途還是挺廣泛的,在數(shù)據(jù)合并、數(shù)據(jù)采集等方面都可以使用。
通過 ndarray 創(chuàng)建 DataFrame
第2種是通過 numpy 的 array 數(shù)據(jù)來創(chuàng)建數(shù)據(jù)框,這里通過numpy 的random函數(shù)來創(chuàng)建一個二維array數(shù)據(jù),接著創(chuàng)建數(shù)據(jù)框。
np.random.seed(0)
arr = np.random.randint(10,size=[5,3])
df = pd.DataFrame(arr,columns=list('abc'))
df
創(chuàng)建的數(shù)據(jù)如下:
也可以通過由 元組(tuple)組成的 array來創(chuàng)建數(shù)據(jù)框。需要注意的是,在代碼方面,這里使用的是 pd.DataFrame.from_records()
方法。
# from_records
arr = np.array(
[
('Lemon', '長沙', 80, 90),
('Jack', '上海', 90, 75),
('Peter', '深圳', 60, 80),
]
)
df = pd.DataFrame.from_records(
arr,
columns=['name', 'city', 'math', 'chem']
)
df
數(shù)據(jù)結果如下:
不過,使用 pd.DataFrame()
也可以實現(xiàn)同樣的結果。
arr = np.array(
[
('Lemon', '長沙', 80, 90),
('Jack', '上海', 90, 75),
('Peter', '深圳', 60, 80),
]
)
df = pd.DataFrame(
arr,
columns=['name', 'city', 'math', 'chem']
)
df
通過列表創(chuàng)建數(shù)據(jù)框
第3種是通過列表創(chuàng)建數(shù)據(jù)框,可以細分為幾種不同的方法。
一維列表