1. 程式人生 > >Python之pandas學習筆記(二) 取數和篩選,插入行列,賦值

Python之pandas學習筆記(二) 取數和篩選,插入行列,賦值

如下圖是pandas的Dataframe清洗資料步驟,包括資料行列選取,賦值,更改列名集重建索引的思維導圖:
pandas學習筆記(二)

文章目錄

一、資料選取-普通行列總結:

df[col] # 根據列名,並以Series的形式返回列
df[[col1, col2]] # 以DataFrame形式返回多列
df.loc[‘index_one’] # 按索引選取資料

df.iloc[0] # 按位置選取資料
df.iloc[0,:] # 返回第一行v
df.iloc[0,0] # 返回第一列的第一個元素


import numpy as np
import pandas as pd
data = pd.read_csv("Y:\\DataSet\\Pandas\\311-service-requests.csv",low_memory=False)
# 1、以DataFrame形式返回多列
data[["Unique Key","Created Date","Closed Date"]]
	Unique Key	Created Date	Closed Date
0	26589651	10/31/2013 02:08:41 AM	NaN
1	26593698	10/31/2013 02:01:04 AM	NaN
2
26594139 10/31/2013 02:00:24 AM 10/31/2013 02:40:32 AM 3 26595721 10/31/2013 01:56:23 AM 10/31/2013 02:21:48 AM 4 26590930 10/31/2013 01:53:44 AM NaN # 2、 df.loc[[index1,index2]] # 按索引取資料(行資料) data.loc[[1,2]] Unique Key Created Date Closed Date Agency Agency Name 1 26593698 10/31/2013 02:01:04 AM NaN NYPD New York City Police Department 2
26594139 10/31/2013 02:00:24 AM 10/31/2013 02:40:32 AM NYPD New York City Police Department # data.iloc[[0,1]] # 與 data.loc[[0,1]] 效果一樣 # data.iloc[0,1] # 返回第一列的第二個元素 '10/31/2013 02:08:41 AM'
loc loc取數表示式 iloc iloc取數表示式
單個,取index的值,與索引位置不同 data_test.loc[“A”] 選取資料的所在行數位置,只能取數字 data_test.iloc[0]
array,多個index值 data_test.loc[[“A”,“B”,“C”] array,選取多行索引位置值 data_test.iloc[[0,1,2]
加入一個切片 data_test.loc[“A”:“C”]/(注:這個包含ABC行) 加入一個切片 data_test.iloc[0:3] (注:不包含索引位置為3的行)
行,列標籤;定位單值 data_test.loc[“A”,“name”] 行,列索引位置,定位單值 data_test.iloc[0,0]
行或列標籤是切片 data_test.loc[“A”:“C”,“name”] 行貨列標籤是切片 data_test.iloc[0:3,0]
接受條件,進行選擇 data_test.loc[data_test[“math”]>60] ------ -------
接受一個boolean的array,按順序,是真則顯示 data_test.loc[[True,False,False,True]] ------ -------

總結
1、 loc和iloc函式都是用來選擇某行的,iloc與loc的不同是:iloc是按照行索引所在的位置來選取資料,引數只能是整數。而loc是按照索引名稱來選取資料,引數型別依索引型別而定;

二、 資料選取-按條件篩選行列 總結

2.1 邏輯符號

符號 表示
&
|
^
df[df[col1] > 0.5] # 選擇col1列的值大於0.5的行
df[df[col1] > 0.5 & df[col1] < 1] 選擇col列值小於1 並且大於0.5的行
df[df.weight==5].reset_index() 選擇名為weight的列值等於5的所有行,並且重置索引
car[car.appname.str.contains(“生活”)] 選擇appname列中含有“生活”的行

三、重建索引和更改列名總結

3.1 重建索引
1、reset_index() 顯示效果:會產生新的索引,但是舊的索引同時同時存在
reset_index(drop=True) # 產生新的索引,刪除舊索引

2、 set_index()
設定指定某(些)列為索引

3.2 改列名:
方法1
a.columns = [‘a’,‘b’,‘c’]
方法2
a.rename(columns={‘A’:‘a’, ‘B’:‘b’, ‘C’:‘c’}, inplace = True)