pandas用法速查:
https://www.toutiao.com/i6758024966521750030/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1×tamp=1573606334&app=news_article&utm_source=weixin&utm_medium=toutiao_android&req_id=2019111308521401002607721726B20283&group_id=6758024966521750030
索引資料
loc:通過行标簽索引資料
iloc:通過行号索引行資料
ix:通過行标簽或行号索引資料(基于loc和iloc的混合)被廢棄
#設定實驗資料
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = [0,1]
columns=['a','b','c']
#加載資料集
df = pd.DataFrame(data=data, index=index, columns=columns)
#顯示前幾行
df.head
# 1. loc——通過行标簽索引行資料,檢視某行
df.loc[1]
df.loc[0]
# 1.2 loc[‘d’]表示索引的是第’d’行(index 是字元)
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
#更改行标簽 行索引
#接下來是把行标簽[0, 1, 2]改成['a', 'b', 'c'],則成這樣了
df.index = ['a','b','c']
#同樣地,把列标簽[0, 1, 2, 3]改成['A', 'B, 'C', 'D'],則成這樣了\
#更改列标簽
df.columns = ['A','B','C','D']
#檢視一行資料
df.loc['d']
# 1.4 loc可以擷取多行資料
df.loc['d':]
# 1.5 loc擴充——索引某行某列 查找某行某列
df.loc['d',['b','c']]
# 1.6 loc擴充——索引某列 查詢C列
df.loc[:,['c']]
# 2. iloc——通過行号擷取行資料
# 2.1 想要擷取哪一行就輸入該行數字
df.iloc[1]
# 2.3 同樣通過行号可以索引多行 查找多行
df.iloc[0:]
#查找 第0列和第3列
df.iloc[:,[0,3]]
#選取某幾行資料 前幾行資料
df.iloc[0:3]
查出前5行
dfoff.iloc[:5]
#輸出第六列的前三行
dfoff.iloc[:3,6]
#取出中間某幾列
train_orignal_01=train_orignal.iloc[:,3:8]
############################################################
#日期類操作
date(int(dfoff['Date_received'].iloc[1][0:4]), int(dfoff['Date_received'].iloc[1][4:6]),
#根據日期來取星期
int(dfoff['Date_received'].iloc[1][6:8])).weekday()+1
#日期格式轉換
dfoff.iloc[:1,6]
# 20160217.0
pd.to_datetime(dfoff.iloc[:1,6], format='%Y%m%d')
#2016-02-17
#求取日期差
pd.to_datetime(dfoff.iloc[:1,6], format='%Y%m%d') - pd.to_datetime(dfoff.iloc[1:2,5], format='%Y%m%d')
# 最後是這種樣子 '2016-02-17' - '2016-05-28'
#判斷是否大于 15天
td = pd.to_datetime(row['Date'], format='%Y%m%d') - pd.to_datetime(row['Date_received'], format='%Y%m%d')
td <= pd.Timedelta(15, 'D')
###########################################################
#函數應用
# weekday_type : 周六和周日為1,其他為0 lambda 不斷循環
dfoff['weekday_type'] = dfoff['weekday'].apply(lambda x: 1 if x in [6,7] else 0)
#if判斷實作
def getWeekday(row):
if row == 'null':
return row
else:
return date(int(row[0:4]), int(row[4:6]), int(row[6:8])).weekday() + 1
dfoff['weekday'] = dfoff['Date_received'].astype(str).apply(getWeekday)
#資料複制 篩選複制
df = dfoff[dfoff['label'] != -1].copy()