|
IO:導(dǎo)入導(dǎo)出數(shù)據(jù)
1 2 3 4 5 6 | import pandas as pd
df = pd.read_csv(filepath_or_buffer, sep=',', header='infer', index_col=None, names=None, na_values=None, error_bad_lines=True, parse_dates=False)
sep 分隔符,csv文件,默認(rèn)是逗號(hào) ,
header 是否導(dǎo)入第一行為列名 否則填None
|
查看前5行數(shù)據(jù):

通過(guò)type(df) 查看df類型 => pandas.core.frame.DataFrame
查看每一列數(shù)據(jù):

通過(guò) type(df['fips']) 得知 => pandas.core.series.Series
Frame中每一列是個(gè)series
查看某一行數(shù)據(jù):
1 2 | df.loc[索引]
索引不僅可以是數(shù)字,還可以是字符串!
|

I/O數(shù)據(jù)寫(xiě)出:
1 | DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"', line_terminator='\n', chunksize=None, tupleize_cols=False, date_format=None, doublequote=True, escapechar=None, decimal='.', **kwds)
|
讀取報(bào)錯(cuò)處理:
1.先把數(shù)據(jù)文本轉(zhuǎn)換成utf-8 文本
2.error_bad_lines = False 默認(rèn)True 出現(xiàn)錯(cuò)誤,報(bào)錯(cuò)
3.encoding = 'gbk'

Missing Value (NaN) 需要優(yōu)先處理
1.針對(duì)數(shù)值型!
2.查看Missing Value的行
3.替換
1 | df.fillna(0) #統(tǒng)一換成0 數(shù)值型,字符型也會(huì)替換成0
|
4.刪除
1 | df.dropna(0) # 將含有 NaN 的行刪除! (不推薦)
|
dataframe與series的屬性
1.字典 => series (key => 索引)

2.字典 => dataframe 需要指定索引!
1 2 3 | pd.DataFrame(dict,index=[0])
pd.DataFrame.from_dict(dict,orient = 'index' ) # 字典中的key 變成索引 , orient:方向
|

獲取行列總數(shù)

獲取索引
獲取列名
行列顛倒
切片( 前閉后開(kāi) )
選取某列或多列
1 2 3 4 5 6 | # 某一列 (填入列名)
df.fips
df['fips'] (推薦)
# 多列 最外層用[ ] 包含
df[['fips','area_name']]
|

增加一列
重命名某列 返回新數(shù)據(jù)集! 原始不變
1 2 3 | df.rename(columns={"old_lab"="new_lab"})
df.rename(columns={"old_lab"="new_lab"},inplace=True) # 替換原來(lái)數(shù)據(jù)集
|
刪除 返回新數(shù)據(jù)集! 原始不變
1 | df.drop('label', axis = 1) # axis 軸 0 代表行, 1 列 inplace=True
|
計(jì)算頻次
1 | df['arer_name'].value_counts()
|

設(shè)置索引位
1 | dfnew = df.set_index("area_name") # 索引位:可以重復(fù),可以為字符串類型
|
需要注意這3者區(qū)別
1 2 3 4 5 6 7 8 | df.loc[1:4] # 針對(duì)索引名稱進(jìn)行操作!
df[1:4] # 針對(duì)索引進(jìn)行操作!
df.iloc[1:4] # 針對(duì)索引進(jìn)行操作!
# 切片針對(duì)索引進(jìn)行操作! 具有 前閉后開(kāi) 屬性
# loc 輸入的值必須是索引的名稱,iloc 輸入的是索引的位置
|
選取多列
1 2 3 | dfnew.loc['Barbour County',['fips','state_abbreviation']]
dfnew.iloc[1:5,:2]
|

定位
1 2 3 | df.loc[ df['area_name'] == 'United States']
df.loc[ df['PST045214'] > 1000000 ]
|
賦值
1 | df.loc[ df.['area_name'] == 'United States' , 'new_lab'] =0
|
加條件判斷的賦值
1 2 | # 注意括號(hào)位置 制定運(yùn)行順序!
df.loc[ (df.['PST045214'] >= 100000) & (df.['PST040210'] >= 100000) , 'labelP' ] =1
|
條件取反賦值
1 | df.loc[ ~((df.['PST045214'] >= 100000) & (df.['PST040210'] >= 100000)) , 'labelP' ] =0
|
loc 與 iloc 的綜合
1 2 3 4 | df.ix[ 1:4 ]
df.ix[ 1:4 , ['fips','area_name'] ]
# ix是loc與iloc的結(jié)合,輸入的既可以是名稱也可以是位置 (不推薦)
|
查詢
1 2 3 4 5 6 7 8 9 10 11 12 13 | df.query("PST045214 > 100000 & PST040210 > 100000 ")
df.query("state_abbreviation == 'AL' ") # 注意 如果使用字符串進(jìn)行比較 ,,要用單引號(hào)!
*****************
num = 100000
df.query("PST045214 > num & PST040210 > num ")
# 報(bào)錯(cuò)!, query 不支持變量!!
*****************
num = 1000000
df.loc[ df['PST045214'] > num ]
# loc 支持變量!!
|
多重索引
1 | movie.set_index(['director_name','movie_title'])
|

1 | movie.set_index(['director_name','movie_title'] , drop= False , append = True) # False 保留作為索引兩列 append 添加索引
|

1 2 3 | index.get_level_values(0) # 獲得0層索引
index.get_level_values(1) # 獲得1層索引
|

對(duì)0層索引操作
1 | movie.loc['James Cameron']
|
處理多重索引時(shí),先對(duì)其進(jìn)行排序
1 | movie.sort_index(inplace= True)
|
對(duì)多層索引操作
1 2 3 4 5 6 7 | movie.loc[(slice(None) , 178.0) ,:] # 逗號(hào)不可去掉,
movie.loc[(slice(None) , slice(178.0 , 200.0 )) ,:]
movie.loc[(slice(None) , slice(178.0 , 200.0 )) , ['color','genres']]
movie.loc[ (['James Cameron','Gore Verbinski'] , slice(178.0 , 200.0 )),['color','genres']]
|

處理空格
1 | movie["movie_title"] = movie["movie_title"].map(lambda s : s.strip(" "))
|
查看類型

交換索引
idx
1 2 3 4 | idx = pd.IndexSlice
movie.loc[ idx[ : , 100.0:200.0] ,:]
movie.loc[(slice(None) , slice(100.0 , 200.0 )),:]
|
xs()
1 2 3 4 5 | movie.xs('James Cameron',level = 0) # 第0層索引選取
movie.xs('James Cameron',level = 'director_name')
movie.xs((178,'James Cameron'),level = (1,0))
|

取反場(chǎng)合
1 2 3 | movie.loc[ (['James Cameron','Jon Gunn'] , slice(100.0 , 200.0 )),"new_lab"] = 1
movie.loc[~( (['James Cameron','Jon Gunn'] , slice(100.0 , 200.0 ))),"new_lab"] = 1 # 報(bào)錯(cuò) !
|
|