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