一.生成數據表1.首先導入pandas庫,一般都會用到numpy庫,先導備用:##### import numpy as np data = pd.DataFrame(pd.read_csv('name.csv',header=1))data = pd.DataFrame(pd.read_exce('name.xlsx'))3.用pandas創(chuàng)建數據表
二.數據表信息查看1.維度查看:data.shape2.數據表基本信息(維度.列名稱.數據格式.所占空間等)data.info()3、每一列數據的格式:? data.dtypes 4、某一列格式:? data[‘B’].dtype 5、空值:? data.isnull() 6、查看某一列空值:? data.isnull() 7、查看某一列的唯一值:? data[‘B’].unique() 8、查看數據表的值:? data.values 9、查看列名稱:? data.columns 10、查看前10行數據、后10行數據:? data.head() #默認前10行數據 data.tail() #默認后10 行數據
三.數據表清洗1、用數字0填充空值:? data.fillna(value=0) 2、使用列prince的均值對NA進行填充:? data[‘prince’].fillna(df[‘prince’].mean()) 3、清楚city字段的字符空格:? data[‘city’]=df[‘city’].map(str.strip) 4、大小寫轉換:? data[‘city’]=df[‘city’].str.lower() 5、更改數據格式:? data[‘price’].astype(‘int’) 6、更改列名稱:? data.rename(columns={‘category’: ‘category-size’}) 7、刪除后出現的重復值:? data[‘city’].drop_duplicates() 8、刪除先出現的重復值:? data[‘city’].drop_duplicates(keep=’last’) 9、數據替換:? data[‘city’].replace(‘sh’, ‘shanghai’) 四、數據預處理
3、按照特定列的值排序:df_inner.sort_values(by=[‘age’]) 4、按照索引列排序:df_inner.sort_index() 5、如果prince列的值>3000,group列顯示high,否則顯示low:df_inner[‘group’] = np.where(df_inner[‘price’] > 3000,’high’,’low’) 6、對復合多個條件的數據進行分組標記df_inner.loc[(df_inner[‘city’] == ‘beijing’) & (df_inner[‘price’] >= 4000), ‘sign’]=1 7、對category字段的值依次進行分列,并創(chuàng)建數據表,索引值為df_inner的索引列,列名稱為category和sizepd.DataFrame((x.split(‘-‘) for x in df_inner[‘category’]),index=df_inner.index,columns=[‘category’,’size’])) 8、將完成分裂后的數據表和原df_inner數據表進行匹配df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
五.數據提取主要用到的三個函數:loc,iloc和ix,loc函數按標簽值進行提取,iloc按位置進行提取,ix可以同時按標簽和位置進行提取。1、按索引提取單行的數值? df_inner.loc[3] 2、按索引提取區(qū)域行數值? df_inner.iloc[0:5] 3、重設索引? df_inner.reset_index() 4、設置日期為索引? df_inner=df_inner.set_index(‘date’) 5、提取4日之前的所有數據? df_inner[:’2013-01-04’] 6、使用iloc按位置區(qū)域提取數據? df_inner.iloc[:3,:2] #冒號前后的數字不再是索引的標簽名稱,而是數據所在的位置,從0開始,前三行,前兩列。 7、適應iloc按位置單獨提起數據? df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列 8、使用ix按索引標簽和位置混合提取數據? df_inner.ix[:’2013-01-03’,:4] #2013-01-03號之前,前四列數據 9、判斷city列的值是否為北京? df_inner[‘city’].isin([‘beijing’]) 10、判斷city列里是否包含beijing和shanghai,然后將符 合條件的數據提取出來? df_inner.loc[df_inner[‘city’].isin([‘beijing’,’shanghai’])] 11、提取前三個字符,并生成數據表? pd.DataFrame(category.str[:3]) 六.數據篩選使用與、或、非三個條件配合大于、小于、等于對數據進行篩選,并進行計數和求和。1、使用“與”進行篩選df_inner.loc[(df_inner[‘age’] > 25) & (df_inner[‘city’] == ‘beijing’), [‘id’,’city’,’age’,’category’,’gender’]] 2、使用“或”進行篩選df_inner.loc[(df_inner[‘age’] > 25) | (df_inner[‘city’] == ‘beijing’), [‘id’,’city’,’age’,’category’,’gender’]].sort([‘age’]) 3、使用“非”條件進行篩選df_inner.loc[(df_inner[‘city’] != ‘beijing’), [‘id’,’city’,’age’,’category’,’gender’]].sort([‘id’]) 4、對篩選后的數據按city列進行計數df_inner.loc[(df_inner[‘city’] != ‘beijing’), [‘id’,’city’,’age’,’category’,’gender’]].sort([‘id’]).city.count() 5、使用query函數進行篩選df_inner.query(‘city == [“beijing”, “shanghai”]’) 6、對篩選后的結果按prince進行求和df_inner.query(‘city == [“beijing”, “shanghai”]’).price.sum() 七.數據匯總主要函數是groupby和pivote_table1、對所有的列進行計數匯總df_inner.groupby(‘city’).count() 2、按城市對id字段進行計數df_inner.groupby(‘city’)[‘id’].count() 3、對兩個字段進行匯總計數df_inner.groupby([‘city’,’size’])[‘id’].count() 4、對city字段進行匯總,并分別計算prince的合計和均值df_inner.groupby(‘city’)[‘price’].agg([len,np.sum, np.mean]) 八.數據統計數據采樣,計算標準差,協方差和相關系數1、簡單的數據采樣df_inner.sample(n=3) 2、手動設置采樣權重weights = [0, 0, 0, 0, 0.5, 0.5] df_inner.sample(n=2, weights=weights) 3、采樣后不放回df_inner.sample(n=6, replace=False) 4、采樣后放回df_inner.sample(n=6, replace=True) 5、 數據表描述性統計df_inner.describe().round(2).T #round函數設置顯示小數位,T表示轉置 6、計算列的標準差df_inner[‘price’].std() 7、計算兩個字段間的協方差df_inner[‘price’].cov(df_inner[‘m-point’]) 8、數據表中所有字段間的協方差df_inner.cov() 9、兩個字段的相關性分析df_inner[‘price’].corr(df_inner[‘m-point’]) #相關系數在-1到1之間,接近1為正相關,接近-1為負相關,0為不相關 10、數據表的相關性分析df_inner.corr() 九.數據輸出分析后的數據可以輸出為xlsx格式和csv格式1、寫入Exceldf_inner.to_excel(‘excel_to_python.xlsx’, sheet_name=’bluewhale_cc’) 2、寫入到CSVdf_inner.to_csv(‘excel_to_python.csv’)
|
|