Pandas - 常用操作

說明:文章使用的數(shù)據(jù)集來源于 https://www.kaggle.com/c/titanic/data Kaggle 泰坦尼克號(hào)競(jìng)賽提供的數(shù)據(jù)旅薄。

一. DataFrame 結(jié)構(gòu)

DataFrame 是 Pandas 最核心的數(shù)據(jù)結(jié)構(gòu)辅髓,可以使用值為列表的字典進(jìn)行構(gòu)造:

>> data = {'a': [1,2,3], 'b':[1.2, None, 1.3], 'c':['Alex', 'Bob', 'Chandler']}
>> data
{'a': [1, 2, 3], 'b': [1.2, None, 1.3], 'c': ['Alex', 'Bob', 'Chandler']}
>> df_data = pd.DataFrame(data)
>> df_data

字典的鍵將作為 DataFrame 的列索引,對(duì)應(yīng)的列表作為相應(yīng)列的值:

>> df_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   a       3 non-null      int64  
 1   b       2 non-null      float64
 2   c       3 non-null      object 
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes

二. 從 csv 文件加載 DataFrame

>> df = pd.read_csv('../data/train.csv')
>> df.head()

讀取結(jié)果:

>> df.info()
<class 'pandas.core.frame.DataFrame'>
Index: 891 entries, Braund, Mr. Owen Harris to Dooley, Mr. Patrick
Data columns (total 11 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Sex          891 non-null    object 
 4   Age          714 non-null    float64
 5   SibSp        891 non-null    int64  
 6   Parch        891 non-null    int64  
 7   Ticket       891 non-null    object 
 8   Fare         891 non-null    float64
 9   Cabin        204 non-null    object 
 10  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(4)
memory usage: 123.5+ KB

此外少梁,還可以使用 DataFrame 提供的 describe 返回常用的統(tǒng)計(jì)分析項(xiàng):

>> df.describe()

其結(jié)果包含了所有數(shù)值列的計(jì)數(shù)洛口、平均值、均值猎莲、最小值绍弟、最大值、中位值等著洼。

三. DataFrame 的列 Series

使用列索引樟遣,取出 DataFrame 的某一列:

>> age = df['Age']
>> age
0      22.0
1      38.0
2      26.0
3      35.0
4      35.0
       ... 
886    27.0
887    19.0
888     NaN
889    26.0
890    32.0
Name: Age, Length: 891, dtype: float64
>> type(age)
pandas.core.series.Series

DataFrame 的列為 Series 結(jié)構(gòu),使用切片索引打印 Series 的前 5 個(gè)元素:

>> age[:5]
0    22.0
1    38.0
2    26.0
3    35.0
4    35.0
Name: Age, dtype: float64

Series 也有索引屬性:

>> age.index
RangeIndex(start=0, stop=891, step=1)

values 屬性返回 ndarray 結(jié)構(gòu):

>> age.values[:5]
array([22., 38., 26., 35., 35.])

下面身笤,使用指定的列作為 DataFrame 的行索引:

>> df = df.set_index('Name')
>> df.head()

Name 列將作為 DataFrame 的行索引:

這時(shí)豹悬,取出的列 Series 的索引也將是旅客的姓名:

>> age = df['Age']
>> age[:5]
Name
Braund, Mr. Owen Harris                                22.0
Cumings, Mrs. John Bradley (Florence Briggs Thayer)    38.0
Heikkinen, Miss. Laina                                 26.0
Futrelle, Mrs. Jacques Heath (Lily May Peel)           35.0
Allen, Mr. William Henry                               35.0
Name: Age, dtype: float64

使用索引取出 Series 中具體的某個(gè)值:

>> age['Heikkinen, Miss. Laina']
26.0

Series 也提供了很多常用的統(tǒng)計(jì)方法:

>> age.mean()
29.69911764705882
>> age.max(),age.min()
(80.0, 0.42)

Series 和 Numpy 的 ndarray 一樣,在和常量進(jìn)行運(yùn)算時(shí)液荸,也可以進(jìn)行廣播操作:

>> age + 10
Name
Braund, Mr. Owen Harris                                32.0
Cumings, Mrs. John Bradley (Florence Briggs Thayer)    48.0
Heikkinen, Miss. Laina                                 36.0
Futrelle, Mrs. Jacques Heath (Lily May Peel)           45.0
Allen, Mr. William Henry                               45.0
                                                       ... 
Montvila, Rev. Juozas                                  37.0
Graham, Miss. Margaret Edith                           29.0
Johnston, Miss. Catherine Helen "Carrie"                NaN
Behr, Mr. Karl Howell                                  36.0
Dooley, Mr. Patrick                                    42.0
Name: Age, Length: 891, dtype: float64

Series 中的每個(gè)值都將進(jìn)行加 10 操作瞻佛。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伤柄,更是在濱河造成了極大的恐慌绊困,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件适刀,死亡現(xiàn)場(chǎng)離奇詭異秤朗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)笔喉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門取视,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人常挚,你說我怎么就攤上這事作谭。” “怎么了奄毡?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵折欠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我秧倾,道長(zhǎng)怨酝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任那先,我火速辦了婚禮农猬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘售淡。我一直安慰自己斤葱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布揖闸。 她就那樣靜靜地躺著揍堕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汤纸。 梳的紋絲不亂的頭發(fā)上衩茸,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音贮泞,去河邊找鬼楞慈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛啃擦,可吹牛的內(nèi)容都是我干的囊蓝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼令蛉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼聚霜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蝎宇,失蹤者是張志新(化名)和其女友劉穎弟劲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姥芥,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡函卒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撇眯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虱咧,死狀恐怖熊榛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腕巡,我是刑警寧澤玄坦,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站绘沉,受9級(jí)特大地震影響煎楣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜车伞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一择懂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧另玖,春花似錦困曙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至鳄哭,卻和暖如春要糊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妆丘。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工锄俄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人飘痛。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓珊膜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宣脉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子车柠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容