https://www.bilibili.com/video/BV1Kx411Z7eu?t=750
import pandas as pd import os curren_dir=os.path.dirname(os.path.dirname(__file__)) print(curren_dir) print(os.path.dirname(__file__)) df=pd.read_excel('test20210428_Test.xlsx') #axis=0或者1 縱向排序還是橫 #f=df.sort_values(by='tradate',ascending=False) #對數據進行排序,用到了sort_values函數,by參數可以指定根據哪一列數據進行排序,ascending是設置升序和降序(選擇多列或者多行排序要加[],把選擇的行列轉換為列表,排序方式也可以同樣的操作)。 #inplace=True 原則替換 #將NAN值轉換為0 fillna=df.fillna(0) df.sort_values(by=['tradate'],ascending=True,inplace=True) df['close11']=df['close'].shift(1) print(df) #刪除列 df.drop(['close11'],axis=1,inplace=True) print(df) #漲跌 diff的參數只有一個periods,控制偏移位置,即與間隔幾個的差值(可以為負數,默認為1) df['shift_1']=df['close'].shift(1) print(df) df['漲跌']=df['close'].diff(1)#等價 df['漲跌1']=df['close']-df['shift_1']#等價 print(df) #漲跌幅度 df['漲跌幅']=df['close'].pct_change(-1) df['漲跌幅1']=(df['close']-df['shift_1'])/df['shift_1'] print(df) #累加 需要按日期升序 df['volume_cum']=df['volume'].cumsum() print(df[['tradate','volume','volume_cum']]) #累乘 需要按日期升序 df['volume_prod']=(df['漲跌幅']+1).cumprod() print(df[['tradate','漲跌幅','volume_prod']],)
import pandas as pd data = [12,5,8,2,8,2,8,2,8,2,8,5,84] data1 = [12,5,8,56,57,58,59,22,84,24,85,56,87] df1=pd.DataFrame(data,columns=['num']) df2=pd.DataFrame(data1,columns=['num']) # print(data1) df=pd.DataFrame(data,columns=['num']) df.sort_values(by=['num'],ascending=1,inplace=True) #1升序排序 0降序 #排序函數 df['cum']=df['num'].cumsum() df['prod']=df['num'].cumprod() print(df.sort_values(by=['num','cum'],ascending=[1,0]) )#按多列排序 #多個DataFrame 上下合並操作,append操作 df3=df1.append(df2) #index不連續index是可以重復的,需要得新設置index索引值 df4=df1.append(df2,ignore_index=True)#ignore_index 重新設置index print(df4) #對數據進行去重
df4.drop_duplicates(subset=['num'],
keep='first',#first 只保留第一行出現的值,last最后一行的值 ,false一行都不保留
inplace=True
)
print('first22',df4)
pandas刪除滿足條件所在的行
df_clear = df.drop(df[df['predict']=='####'].index)
# 多個條件
df_clear = df.drop(df[(df['predict']=='####') | (df['predict']=='車位充足')].index)
數據合並
res = pd.merge(res, mana_type_size, on=['MNG_ID', 'FND_TYPE'], how='left')
多個條件同時滿足,&,或關系用|
data_mng = df[(df['MNG_ID'] == i['MNG_ID']) & (df['MANA_CODE'] == i['MANA_CODE'])].to_dict('records')
pandas獲取groupby分組里最大值所在的行
https://blog.csdn.net/mappy93/article/details/79319506/
# dg=df.groupby('MNG_ID').apply(lambda t:t[t.RESI_DATE==t.RESI_DATE.max()])
df_gy=df.iloc[df.groupby('MNG_ID').apply(lambda x: x['RESI_DATE'].idxmax())]
1、python中數據框求每列的最大值和最小值
df.min()
df.max()