pandas資料分析筆記

2021-10-10 13:00:54 字數 4038 閱讀 8084

對df一部分小於等於0的資料設定為nan: 

df[df.iloc[:,1:]<=0] = np.nan
某列轉換成數值型

df_vc1['871eh1-ga03-i1/meas1/prim'] = pd.to_numeric(df_vc1['871eh1-ga03-i1/meas1/prim'],errors='coerce')#'coerce'將字串無效解析設定為nan
對 df一部分資料轉成數值型:

某列轉為str型:

將指定資料列滿足條件的資料設定為nan:

df.loc[df['fzi'] < 20.0,'fzi'] = np.nan
按b列分組對a列進行資料描述

df['a'].groupby(df['b']).describe()
fillna(0)無法填充整型0,這樣轉換下 

df['priority'].fillna(0,inplace = true)

df['priority'] = df['priority'].astype('int64')

刪除指定列

df_vc.drop('871eh1-ga03-ap/meas2/prim', axis=1,inplace=true)
轉換time格式,取出部分列

df_vc['time'] = pd.to_datetime(df_vc['time local'])

df_vc1 = df_vc.loc[:,['time','871eh1-ga03-i1/meas1/prim','871eh1-ga03-i2/meas1/prim','871eh1-ga03-i3/meas1/prim']]

四捨五入毫秒轉變為秒級

df['time'] = df['time'].dt.round('s')
向下取整將毫秒轉變為秒級

df_dgs['time'] = df_dgs['time'].dt.floor('s')
刪除指定列重複的多餘的行

df2=df.drop_duplicates('time')
檢視df資料型別及計數

df_vc1.dtypes

df_vc1.count()

算所有列平均值

df_vc1['ga03-i'] = df_vc1.mean(1)
算指定列平均值

df['fzw'] = df[['fz1','fz2','fz3','fz4']].mean(1)
df_mer1 = pd.concat([df3, df_vc1], axis=0, join='outer')#將兩個df按共同的列並集拼接

df_mer1.sort_values(by='time',inplace=true)#按指定列排序

'low': 3,

'medium': 2,

'high': 1}

df_mer1 = df_mer1.groupby('time').mean()#以指定列分組後算均值

df_mer1.dropna(subset=['priority'],inplace=true)刪除指定列的空值行

df_mer1.to_csv('./current_voltage/not ffill/ga03-i.csv',index=false)#df轉為csv檔案

df_dgs.replace(0.,np.nan,inplace=true)#替換0為nan

df[['windspeed','thr_power','dg_power','fzw','fzi','fzu']] = df[['windspeed','thr_power','dg_power','fzw','fzi','fzu']].round(decimals=2)#保留2位小數

df['priority'].value_counts()#指定列的取值計數

df_pdp2.fillna(method='ffill',inplace = true)#向前填充

df_pdp2 = df_pdp2.groupby('time').mean()#按time列分組對其它列算均值,之後需要做df_mer = df_mer.reset_index()

df0 = df[df['priority']==0]#取出指定列值為0的所有行

df0 = df0.iloc[np.random.randint(0,469318,7507)]#取出隨機數指定的行

df_v = pd.read_csv(r'c:\users\18467\desktop\中集\中集資料\tankvolume timeseriesvalues_exported_20200501t000000-20200601t000000_rmorkvemwvelvgbhw艙室容積\timeseriesvalues_exported_20200501t000000-20200601t000000_rmorkvemwvelvgbhw.csv', na_values=' ')#讀取csv資料同時將空格轉為nan值

df_mer.rename(columns=,inplace=true)#改名

特徵分桶

df['ws_bucketized'] = pd.qcut(df['windspeed'], 2, labels=false)

df = pd.merge(df,df.groupby(['ws_bucketized'])['fzw'].mean()

.reset_index()

.rename(columns=)

,on='ws_bucketized'

,how='left'

)

#df1與df2列名稱相同
取出篩選出的資料的索引

data1[data1['a'].isin(['cc'])].index#得先通過data[bool]取出指定資料再.index獲取索引

pd.read_csv(index_col='a')與pd.set_index('a')結果一樣

data1.groupby('a').size()結果為索引為a的series,.reset_index()之後變為dataframe,索引a變為第一列

data1['a'].values=data1['a'].to_numpy()

pd.dataframe(data1['a'])#series變dataframe

找同一行的另乙個取值

data1=pd.dataframe()

data1['b'][data1[data1['a'].isin(['cc'])].index].values[0]

或data1[data1['a'].isin(['cc'])]['b'].values[0]

a=pd.dataframe(['cc1=cc=cc=c1','ccc1=cc=cc=c1','cc1=cc(c)=cc=c1','cc1=cc(c)=cc(c)=c1','cc1=cc=c(c)c=c1','ccc1=cc=c(cc)c=c1'],columns=)

b=a['smiles'].values.tolist()

b.extend(['a','b'])

c=pd.dataframe()

c['smiles']=b

雙迴圈雙break

bestid = none

for i in df_mae.index:

for j in df_mae.index[i+1:i+10]:

if df_mae['id'][j][:8]==df_mae['id'][i][:8]:

bestid = df_mae['id'][j]

break

else:

continue

break

資料分析 pandas

pandas是乙個強大的python資料分析的工具包,它是基於numpy構建的,正因pandas的出現,讓python語言也成為使用最廣泛而且強大的資料分析環境之一。pandas的主要功能 具備對其功能的資料結構dataframe,series 整合時間序列功能 提供豐富的數 算和操作 靈活處理缺失...

python資料分析 Pandas

import pandas as pd series 可以看做乙個定長的有序字典。基本任意的一維資料都可以用來構造 series 物件 s pd.series 1,2,3.0,abc s1 pd.series data 1,3,5,7 index a b x y 通過下標獲取資料 s1 a seri...

資料分析之Pandas

from pandas import series,dataframe import pandas as pd import numpy as np states california ohio oregon texas year 2000,2001,2002,2003 value 35000,71...