程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Pandas庫常用功能 選擇行和列、去重

編輯:Python

Pandas庫常用功能

  • 一、選擇行和列
    • 1.1 創建示例數據
    • 1.1 根據條件選擇滿足條件的行
    • 1.2 使用loc進行選擇
      • 1.2.1 選擇行
      • 1.2.2 選擇列
    • 1.3 使用iloc進行選擇
      • 1.3.1 選擇行
      • 1.3.2 選擇列
    • 1.4 直接使用column選擇列
    • 1.5 選擇某一塊數據
  • 二、去重

一、選擇行和列

1.1 創建示例數據

import pandas as pd
import numpy as np
value = np.array([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]])
index = np.array([10, 20, 30])
column = np.array(['u', 'i', 'r', 'time'])
df = pd.DataFrame(data=value, index=index, columns=column)
''' u i r time 10 1 2 3 4 20 2 3 4 5 30 3 4 5 6 '''

主要涉及到loc和iloc的用法,老版本的python裡還有ix,不過ix已被新版本棄用

.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing

很容易發現,loc是根據屬性名進行索引,而iloc則是根據列號進行索引,如df.loc[:, ‘u’]和df.iloc[:, 0]實現的是相同的功能~

1.1 根據條件選擇滿足條件的行

# 通過一個布爾判斷進行篩選,篩選出time列大於4的行
''' u i r time 20 2 3 4 5 30 3 4 5 6 '''
data = df[df.time > 4]
# 也可以使用設置多個條件,如加上要求評分為5分的條件
''' u i r time 30 3 4 5 6 '''
data = df[(df.time > 4) & (df.r == 5)]

1.2 使用loc進行選擇

1.2.1 選擇行

# 選擇第一行(第一行的index是10)
''' u 1 i 2 r 3 time 4 Name: 10, dtype: int32 '''
data = df.loc[10]
# 選擇第二行及之後的行(第二行的index是20)
''' u i r time 20 2 3 4 5 30 3 4 5 6 '''
data = df.loc[20:30]
# 或者data = df.loc[20:]

1.2.2 選擇列

# 選擇第一列(第一列的column是'u')
''' u 1 i 2 r 3 time 4 Name: 10, dtype: int32 '''
data = df.loc[:, 'u']
# 選擇第二列到第四列(第二列的column是'i',第四列的column是‘time’)
''' i r time 10 2 3 4 20 3 4 5 30 4 5 6 '''
data = df.loc[:, 'i':'time']

1.3 使用iloc進行選擇

1.3.1 選擇行

# 選擇第一行
''' u 1 i 2 r 3 time 4 Name: 10, dtype: int32 '''
data = df.iloc[0]
# 選擇第二行及之後的行
''' u i r time 20 2 3 4 5 30 3 4 5 6 '''
data = df.iloc[1:3]
# 或者data = df.iloc[1:]

1.3.2 選擇列

# 選擇第一列
''' u 1 i 2 r 3 time 4 Name: 10, dtype: int32 '''
data = df.iloc[:, 0]
# 選擇第二列到第四列
''' i r time 10 2 3 4 20 3 4 5 30 4 5 6 '''
data = df.iloc[:, 1:4]

1.4 直接使用column選擇列

# 選擇第一列(第一列的column是'u')
''' u 1 i 2 r 3 time 4 Name: 10, dtype: int32 '''
data = df['u']

1.5 選擇某一塊數據

# 使用loc
''' u i r 10 1 2 3 20 2 3 4 '''
data = df.loc[10:20, 'u':'r']
# 使用iloc
''' u i r 10 1 2 3 20 2 3 4 '''
data = df.iloc[0:2, 0:3]

二、去重

import pandas as pd
# 數據共有四列,列名分別為u,i,r和time
#u i r time
#1 3 4 1
#2 1 5 2
#3 1 5 3
#1 3 4 2
#1 3 4 1
df = pd.read_csv('rating.txt', names=['u', 'i', 'r', 'time'])

很明顯,第一條數據和第五條數據重復,需要對數據集進行去重,主要使用的是drop_duplicates()

# u i r time
#0 1 3 4 1
#1 2 1 5 2
#2 3 1 5 3
#3 1 3 4 2
data = df.drop_duplicates()

但如果不考慮時間,我們會發現第一、四、五條數據重復,可以結合上面的選擇列的方法進行去重

# u i r
#0 1 3 4
#1 2 1 5
#2 3 1 5
data = df.loc[:, ['u', 'i', 'r']].drop_duplicates()

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved