pandas 2索引和選擇資料

2021-10-06 22:27:48 字數 2990 閱讀 2910

對於一種資料結構,最基本的操作就應該是增刪改查了。

行選擇和列選擇有許多方法,很容易記混,常用的要記住。

主要方法有三種:iloc,loc,

df.loc["index1" : "index2", ["price"]]

df.iloc[a:b]['price']

123

4567

s.sample(frac=0.5)

// 引數

// 預設選擇行,n = 行數, frac = 比例

// replace: 預設false 無放回取樣

// weights: 樣本取樣權重

// axis: 預設=0 行, =1 列

// random_state=2

123

4567

891011

1213

14

# 降取樣 -- 分類抽樣

def subsample(df_x, splitattribute = "attribute4"):

subsamplenum = min(df_x.groupby(splitattribute).size())

print(subsamplenum)

df_x_sub = df_x.iloc[1:2,:]

#df_y_sub = df_y.iloc[1:2,:]

for label in df_x[splitattribute].unique():

tmp_x = df_x[df_x[splitattribute] == label]

random_list = random.sample(range(0,len(tmp_x)),subsamplenum )

return df_x_sub #, df_y_sub

單列

123

45

// 末尾增加

df["new col"] = none

// 指定位置增加,在2列後

df.insert(2,'city')

多列

pd.concat([df, pd.dataframe(columns=["c","d"])])

單行(待驗證)

123

45

// loc 新增

df.loc[『5『] = [3, 3, 3, 3]

// set_value 新增

df.set_value(『5『, df.columns, [3,3,3,3], takeable=false)

多行

多行相當於合併兩張表了,可以參考(merge,concat)方法。

test_ = pd.merge(tmp, data.loc[:,["customer_id", "label"]],on=['customer_id'],how='left',copy=false")

123

4567

8910

// del 方法

def df["col_name"]

//根據列名 drop 方法

df.drop(["b", "c"], axis=1,inplace = true)

axis = 1 列

axis = 0 行

// 根據列號 drop 方法

df.drop(df.columns[[1,2]], axis=1, inplace=true)

123

45

// 根據索引 刪除行

df = df.drop([1, 2])

// 根據value 刪除行

df = df[~df["col"].isin(5,9)

按照條件刪除行

1

df.drop(df[df["order_pay_time"] < pd.to_datetime("2013-11-12 23:59:44") ].index)

單值修改和查詢時, 參考選擇行列方法。

多值查詢時,

按條件查詢

df_train[( df_train["row"] == 1) &( == "null")]

query 查詢

df.query('(a < b) & (b < c)')

替換

單個替換,inplace = true 覆蓋原始檔

df.replace(to_replace, value, inplace = true)

多值替換—-字典

df.replace()

按條件替換

df.where(df > 0, -df, inplace=true)

交換兩列的位置

1

df[['b', 'a']] = df[['a', 'b']]

pandas 2列資料合併

1 其中的trans type trans class兩列合成一列用於模糊查詢,並建立新的列。df trans type class df trans type df trans class 注 但是某一列如果為空,另一列不為空,則合併結果是為空,所以在合併之前需要對na進行預處理,替換或者刪除。2...

機器學習之 Pandas 2

從網頁裡抓取資料並進行操作 import numpy as np import pandas as pd from pandas import series,dataframe import webbrowser linkur2 webbrowser.open linkur2 開啟網頁 在網頁中複製...

pandas資料選擇(索引)

import pandas as pd import numpy as npdates pd.date range 20180101 periods 6 df pd.dataframe np.arange 24 reshape 6,4 index dates,columns a b c d prin...