pandas的外部資料匯入與常用方法
外部資料匯入
匯入excel檔案
pandas匯入excel用read_excel()方法:
import pandas as pd excel_file1 = pd.read_excel('data/測試.xlsx',encoding='utf-8')複製程式碼
姓名年齡工作工資 0張三25學生200 1李四24工人3000 2王偉28NaN5000 3王二毛22自由職業6000複製程式碼
第一個引數是路徑,既可以使用絕對路徑又可以使用相對路徑,如果檔名含有漢字,注意指定設定一下屬性encoding = 'utf-8'
,另設定sheet_name
指定具體的Sheet名字,也可傳入sheet的順序,從0開始。
excel_file1 = pd.read_excel('data/test.xlsx',sheet_name = 0)複製程式碼
指定索引
行索引預設從0開始,通過index_col
設定,header
設定行索引。
excel_file1 = pd.read_excel('data/測試.xlsx',encoding='utf-8',index_col=0)複製程式碼
年齡工作年資 姓名 張三25學生200 李四24工人3000 王偉28NaN5000 王二毛22自由職業6000複製程式碼
excel_file1 = pd.read_excel('data/測試.xlsx',encoding='utf-8',header=1)複製程式碼
張三25學生200 0李四24工人3000 1王偉28NaN5000 2王二毛22自由職業6000複製程式碼
指定索引列
有時本地檔案列數太多,可以設定usercols
指定匯入的列,也可以列表形式傳入多個值,表示傳入哪些列。
excel_file1 = pd.read_excel('data/測試.xlsx',encoding='utf-8',usecols=[0,2])複製程式碼
姓名工作 0張三學生 1李四工人 2王偉NaN 3王二毛自由職業複製程式碼
常用方法
-
shape()
可以獲取excel檔案的行和列,以元祖形式返回; -
info()
獲取資料型別; -
astype()
可轉換列裡面的資料型別,括號裡是要轉換的目標型別;如df[列2].astype('float64')
;df['列'].dtype
可檢視列的型別 -
isnull()
判斷哪個值是缺失值; -
dropna()
刪除有缺失值的行,返回刪除後的資料,傳入引數how=all,要全為空值才會刪除; -
fillna()
括號內可直接填入要要填充的值,也可指定列填充,以字典 形式傳參; -
drop_duplicates()
預設對所有重複值判斷,預設保留keep=first
第一個行值;通過keep
修改,值可為last
,保留最後一個,還可設定keep
為False
,一個也不保留。另也可指定列名去重,如傳入引數subset
=['列名1,列名2'],注意是以列表形式傳參; -
head()
傳入的引數代表獲取前幾行; -
describe()
掌握數值的分佈情況,如均值,最值,方差,分位數。 -
column
和index
可設定列索引
和行索引
,以列表
形式傳參; -
set_index()
重新設定索引列,傳入要指名要用做行索引的名稱; -
reset_index(level = None,drop=False,inplace = False)
,level指定要將層次化索引的第幾級別轉化為columns
,第一個索引為0級,第二個為1級,預設全部轉化為columns。drop
是否將原索引刪掉,inplace
是否修改原資料表;該方法常用於資料分組和資料透視表中。 -
rename()
重新命名索引,可重新設定columns
和index
,以字典
形式傳參,key
為原值,value
為替換後的值。
匯入CSV檔案
pandas匯入csv檔案用read_csv()方法;
import pandas as pd csv_file1 = pd.read_csv('.\\data\\train-pivot.csv',index_col=0,header=0,nrows = 2) 複製程式碼
通過sep
設定分割符,encoding
指定編碼格式。匯入csv檔案要指定為gbk,不然會報錯,如果一個大檔案你只需看前面幾行,通過nrows
設定。
import pandas as pd csv_file1 = pd.read_csv('data/train-pivot.csv',encoding='gbk',nrows=2) print(csv_file1)複製程式碼
使用者ID 客戶分類區域 是否省會7月銷量8月銷量 059224A類一線城市是6200 155295B類三線城市否372735複製程式碼
可以設定usercols
指定匯入的列。
使用者ID區域 059224一線城市 155295三線城市 246035二線城市 32459一線城市 422179三線城市複製程式碼
匯入sql
pandas中有read_sql()
方法:
import pandas as pd import pymysql # 建立連線 conn = pymysql.connect(host = 'localhost',user = 'python', password = 'passwd',db = 'test', charset = 'utf-8' ) ''' user:使用者名稱 password:密碼 host:資料庫地址/本機用localhost db:資料庫名 charset:編碼,一般為utf-8 ''' sql = "SELECT * FROM user" # 寫要執行的sql語句 pd.read_sql(sql,conn)複製程式碼