Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)
DataFrame
? ?DataFrame是一個(gè)【表格型】的數(shù)據(jù)結(jié)構(gòu),可以看做是【由Series組成的字典】(共用同一個(gè)索引)。DataFrame由按一定順序排列的多列數(shù)據(jù)組成,設(shè)計(jì)初衷是將Series的使用場(chǎng)景從一維拓展到多維。DataFrame既有行索引,也有列索引、
? --- 行索引:? index
?--- 列索引: columns
--- 值:? values(numpy的二維數(shù)組)
?DataFrame的創(chuàng)建
? 1.? ?最常用的方法是傳遞一個(gè)字典來(lái)創(chuàng)建。
? ? ?DataFrame以字典的鍵作為每一【列】的名稱,以字典的值(一個(gè)數(shù)組)作為每一列。
? ? ?此外,DataFrame會(huì)自動(dòng)加上每一行的索引(和Series一樣)。
? ? 同Series一樣,若傳入的列與字典的鍵不匹配,則相應(yīng)的值為NaN。
2. 打印DataFrame的形狀? ?.shape
# 打印DataFrame的形狀 print(df.shape) """ (4, 4) """3.給DataFramed的行索引重新賦值? .index
# 重新給DataFrame的行索引賦值 df.index = [1, 2, 3, 4] print(df) """height age sex weight 1 175 22 女 NaN 2 180 23 男 NaN 3 169 22 女 NaN 4 177 21 男 NaN """4. 修改DataFrame的列名(給DataFrame的列名重新賦值)
# 修改DataFrame的列名 df.columns = [0, 2, 4, 6] print(df) """0 2 4 6 1 175 24 女 NaN 2 180 23 男 NaN 3 169 21 女 NaN 4 177 22 男 NaN """?
?DataFrame的索引
1.對(duì)列進(jìn)行索引
? ? ?- 通過(guò)類似字典的方式
? ? ? - 通過(guò)屬性的方式
? 可以將DataFrame的列獲取為一個(gè)Series。返回的Series擁有原DataFrame相同的索引,且name屬性也已經(jīng)設(shè)置好了,就是相應(yīng)的列名。
# 通過(guò)字典的形式進(jìn)行檢索 【檢索列返回值,是Series類型】 print(df['age']) """ A 20 B 20 C 18 D 22 Name: age, dtype: int3 """ # 通過(guò)屬性的方式進(jìn)行檢索 # 對(duì)于DataFrame而言,列名就相當(dāng)于屬性 # DataFrame 是統(tǒng)計(jì)數(shù)據(jù)時(shí),用的表格,某一個(gè)事物屬性,每一個(gè)屬性對(duì)應(yīng)的DataFran中的列名 print(df.age) """ A 21 B 22 C 18 D 21 Name: age, dtype: int32 """2.對(duì)行進(jìn)行索引
? ? -- 使用.ix[]來(lái)進(jìn)行行索引? ?(過(guò)時(shí))
? ? -- 使用.loc[]加index來(lái)進(jìn)行行索引
? ? -- 使用.iloc[]加整數(shù)來(lái)進(jìn)行行索引
? ? ?同樣返回一個(gè)Series,index為原來(lái)的
# 行索引 '''顯示索引''' # 對(duì)于行的檢索,返回值也為Series print(df.loc['A']) """ Name: age, dtype: int32 height 175 age 19 sex 女 weight 55 Name: A, dtype: object """# 中括號(hào)括起來(lái),代表的是條件, 即檢索多行,返回的數(shù)據(jù)就是DataFrame print(df.loc[['A', 'B']]) """height age sex weight A 175 24 女 55 B 180 21 男 78 """'''對(duì)于切片而言沒(méi)有列切片(因?yàn)榱惺菍傩?) ''' # 可以進(jìn)行切片索引,左閉右閉 print(df.loc['A':'C']) """height age sex weight A 175 21 女 55 B 180 20 男 78 C 169 19 女 71 """'''隱式索引(左閉右開)''' # DataFrame自身有Bug,索引是漢字,有時(shí)無(wú)法檢索結(jié)果 print(df.iloc[1:3]) """height age sex weight B 180 18 男 78 C 169 19 女 71 """3.對(duì)元素索引的方法? (查詢到具體的數(shù)據(jù))
? -- 使用列索引
? -- 使用行索引? ?(iloc[3,1]) 相當(dāng)于兩個(gè)參數(shù); iloc[[3,3]] 里面的[3,3] 看做一個(gè)參數(shù)
? -- 使用values屬性 (二維numpy數(shù)組)?
'''對(duì)元素進(jìn)行索引''' # 查詢到具體額數(shù)據(jù) # 找到 列名為sex的,行索引為B的數(shù)據(jù) print(df['sex']['B']) # 男 # 可以直接修改具體的值 (再進(jìn)行修改值的時(shí)候,會(huì)拋出一個(gè)警告,讓我們?nèi)opy一份, # 根據(jù)具體的情況可以忽略,程序是可以正常執(zhí)行的) df['sex']['B'] = '女博士' print(df) """height age sex weight A 175 22 女 55 B 180 20 女博士 78 C 169 18 女 71 D 177 23 男 98 """'''使用loc取出具體的元素''' # 檢索行的時(shí)候,參數(shù)可以多個(gè),但是列,無(wú)法完成這樣的操作 print(df.loc['C']['height']) # 169 print(df.loc['C', 'height']) # 169'''可以使用values取出某個(gè)數(shù)據(jù)''' # 使用values取出第一行的第三個(gè)(從0開始,左閉右閉) print(df.values[0,2]) # 55【注意】 直接用中括號(hào)時(shí):
? ? ? ? ? ? ?---索引表示的是列索引
? ? ? ? ? ? ?----切片表示的是行切片
總結(jié)
以上是生活随笔為你收集整理的Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Pandas的学习(2.Series的索
- 下一篇: Matplotlib的画图的补充(Mat