1. pandas 數(shù)據(jù)讀?。?/span>
1 2 | import pandas as pd df = pd.read_csv( "G:\\...\\NBA.csv" ,encoding = 'gbk' ) |
read_csv 的重要參數(shù):
filepath_or_buffer: # 文件的路徑,URL或任何具有read()方法的對(duì)象。sep : # 分隔符,默認(rèn)為 , header: # 列名 , 默認(rèn)為 header=0 取第0行做為數(shù)據(jù)集的列名names: # 指定數(shù)據(jù)集的列名稱(chēng),配合header=None 使用 encoding: # 編碼格式na_values:["Nope , ..."] # 數(shù)據(jù)集中的字符串"Nope"被識(shí)別為NaN , ...keep_defalut_na: # 如果指定了na_values,并且keep_default_na是False默認(rèn)的NaN值被覆蓋na_filter: # 默認(rèn)True,對(duì)缺失值進(jìn)行檢測(cè),F(xiàn)alse為不處理。error_bad_lines: # 默認(rèn)True,如果False,跳過(guò)錯(cuò)誤行數(shù)據(jù)warn_bad_lines: # 默認(rèn)True,如果error_bad_lines為False,而warn_bad_lines為T(mén)rue,則會(huì)輸出每個(gè)“壞行”的警告
2、Missing data 處理
DataFrame.dropna() # 返回沒(méi)有NaN值的數(shù)據(jù)集DataFrame.fillna(X) # 將X填充到數(shù)據(jù)集中的NaN值DataFrame.replace([to_replace, value, ...]) # 將to_replace 替換為 value , # 例子:df.replace(np.nan,'xx',regex=False) # 將NaN值替換為xx , regex 若為T(mén)rue 將to_value 當(dāng)作正則進(jìn)行匹配!
1、DataFrame 是一個(gè)表格型數(shù)據(jù)結(jié)構(gòu),既有行索引又有列索引,看作由Series組成的字典。
1 | df = pd.read_csv( "G:\\....\\NBA.csv" ,encoding = 'gbk' ) |
重要方法:
查看: head([n]) # 返回前n行 tail([n]) # 返回最后n行 df[' 列名 '] # 返回某一列的數(shù)據(jù) df.列名 # 返回某一列的數(shù)據(jù) 添加 / 修改整列 : df[' 列名 '] = 'xxx ' # (添加/修改) 一列,內(nèi)容為xxx刪除: del df[' 列名 '] # 刪除某一列 df.pop('列名') # 返回項(xiàng)目并從DataFrame中刪除列運(yùn)算: df[col3] = df[col1] + df[col2]判斷: df[ ' 列名 ' ] > 100 # 符合顯示 True , 否則False
重要屬性:
1.index
1 2 | df.index # RangeIndex(start=0, stop=3922, step=1) # 3922文件總行數(shù) , |
2.columns 返回列名
1 2 | df.columns # Index(['序號(hào)', 'Player', 'height', 'weight', 'collage', 'born', 'birth_city','birth_state'],dtype='object') |
3.shape
1 2 | df.shape # (3922, 8) 數(shù)據(jù)集一共3922行,8列 |
4.dtypes 返回每一列數(shù)據(jù)類(lèi)型
1 2 3 4 5 6 7 8 9 10 | df.dtypes # 序號(hào) int64 # Player object # height float64 # weight float64 # collage object # born float64 # birth_city object # birth_state object # dtype: object |
行選取
1.切片
1 | df[: 5 ] 或 df [ 10 ] |
2.特殊的索引選取方式
1 | df.iloc[ 0 ] # 返回索引為0的行信息 |
2、Series 一維數(shù)組對(duì)象,由一組數(shù)據(jù)和與之相關(guān)的數(shù)據(jù)標(biāo)簽(索引)組成。
1 2 3 4 5 | series = df[ '列名' ] series = df.列名 # 篩選 s2 = series[ series > 100 ] # 返回大于100的數(shù)據(jù)集 |
屬性:
1 2 | series.index series.value |
方法:
1 2 3 | series.value_counts() # 出現(xiàn)頻數(shù) series.unique() # 返回對(duì)象中的唯一值的np.ndarray。 len ( series.unique ) # 查看長(zhǎng)度 |
3、創(chuàng)建DataFrame 與 Series
1、創(chuàng)建Series
1 2 3 4 5 6 7 8 9 10 11 | # 1. 字典形式 : sdata = { "A" : '123' , "B" : '456' } series1 = pd.Series( sdata ) # 2. 數(shù)組形式 : series2 = pd.Series([ 1 , 2 , 3 , 4 , 5 ] ) # 默認(rèn)索引從0 開(kāi)始, ... series2 = pd.Series([ 1 , 2 , 3 , 4 , 5 ] , index = [ 'a' , 'b' , 'c' , 'd' , 'e' ] ) series2 = pd.Series([ 1 , 2 , 3 , 4 , 5 ] , index = list ( 'abcde' ) ) # 3. 實(shí)數(shù)形式 : series3 = pd.Series( 11 , index = list ( 'abc' ) ) |
2、創(chuàng)建DataFrame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 1. 字典形式 # 一層字典: data = { 'state' :[ 'Ohio' , 'Nevada' , 'Ohio' ], 'year' :[ 1999 , 1888 , 1777 ], 'pop' :[ 1.4 , 1.2 , 1.1 ] } df1 = pd.DataFrame(data) # 列名:pop,year,stats(亂序) , 行索引默認(rèn)從0開(kāi)始 df1 = pd.DataFrame(data , columns = [ 'pop' , 'year' , 'stats' ]) # 指定數(shù)據(jù)表中列名順序 df1 = pd.DataFrame(data , index = [ 'one' , 'two' , 'three' ] ) # 指定索引 # 兩層字典: data = { 'A' :{ 'user' : 'alex' , 'age' : 20 }, 'B' :{ 'user' : 'eric' , 'age' : 10 }, } df2 = pd.DataFrame(data) # 外層字典的key作為列 , 內(nèi)層key作為行索引 df2 = pd.DataFrame(data , index = [ 'user' , 'age' ]) # 顯式指出行索引 # 2. 二維數(shù)組 arr = [ [ 1 , 2 , 3 , 4 ] , [ 5 , 6 , 7 , 8 ] ] pd.DataFrame(arr) |
3、Series =》 DataFrame
1 | pd.DataFrame(Series) |
1 2 | df2 = pd.read_csv( "G://..../pokemon.csv" ,encoding = 'gbk' ) g1 = df2.groupby([ 'Type 1' , ... ]) |
重要屬性:
1.groups 返回dict {group name -> group labels} , 分組里每個(gè)組對(duì)應(yīng)的索引項(xiàng)列表
重要方法:
1.first() 返回組中每一列的第一個(gè)值(非NaN)
2.size() 返回分組中類(lèi)型的個(gè)數(shù)
3.describe() 生成各種匯總統(tǒng)計(jì),不包括NaN值
4.get_group('xxx') 獲取該分組下所有項(xiàng)內(nèi)容
Aggregation:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 方式一 : g1. sum () # 方式二 : import numpy as np g1.agg(np. sum ) # 方式三 : g1.agg(np. sum )[ ' 列名 ' ] # 單獨(dú)計(jì)算某一列 g1[ ' 列名 ' ].agg(np. sum ) # 多重計(jì)算 : g1.agg([ np. sum ,np.mean,np.std,... ]) # 每一列 都使用不同統(tǒng)計(jì)量 (字典) g1.agg( { "HP" :[np. sum ,np.mean], "Attack" :np.std} ) # 重新命名返回的列 xxxx.rename(columns = { "HP" : 'aaa' , "Attack" : "bb" }) |
Transformation :
Transform返回發(fā)數(shù)據(jù)集與原數(shù)據(jù)集大小一樣
每一個(gè)函數(shù)都是對(duì)每一個(gè)group進(jìn)行的操作,不是全部的數(shù)據(jù)集
不會(huì)改變?cè)術(shù)roup的數(shù)據(jù),返回的是新數(shù)據(jù)
每個(gè)函數(shù)是作用在每個(gè)group里面的column上
1 2 | f = lambda s : ( s - s.mean() ) / s.std g1.transform( f ) # transform 計(jì)算非字符型變量 |
Filtration :
作用于整個(gè)group上 或者 作用于某個(gè)列
返回DataFrame
1 2 3 | df = g1. filter ( lambda s : len (s) > = 80 ) # 分組內(nèi)項(xiàng)總數(shù)大于80 df = g1. filter ( lambda s : np.mean(s[ 'HP' ]) > = 60 ) # 分組中HP平均值大于60 |
聯(lián)系客服