pandas的外部資料匯入與常用方法

Simon_Zhou發表於2019-04-30

外部資料匯入

匯入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   王偉  28    NaN      5000
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
王偉   28   NaN       5000
王二毛  22  自由職業   6000複製程式碼
excel_file1 = pd.read_excel('data/測試.xlsx',encoding='utf-8',header=1)複製程式碼
    張三  25    學生     200
0   李四  24    工人    3000
1   王偉  28   NaN      5000
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,保留最後一個,還可設定keepFalse,一個也不保留。另也可指定列名去重,如傳入引數subset=['列名1,列名2'],注意是以列表形式傳參;

  • head()傳入的引數代表獲取前幾行;

  • describe()掌握數值的分佈情況,如均值,最值,方差,分位數。

  • columnindex可設定列索引行索引,以列表形式傳參;

  • set_index()重新設定索引列,傳入要指名要用做行索引的名稱;

  • reset_index(level = None,drop=False,inplace = False),level指定要將層次化索引的第幾級別轉化為columns,第一個索引為0級,第二個為1級,預設全部轉化為columns。drop是否將原索引刪掉,inplace是否修改原資料表;該方法常用於資料分組和資料透視表中。

  • rename()重新命名索引,可重新設定columnsindex,以字典形式傳參,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月銷量  
0  59224   A類  一線城市    是     6    20     0
1  55295   B類  三線城市    否    37    27    35複製程式碼

可以設定usercols指定匯入的列。

    使用者ID    區域
0  59224  一線城市
1  55295  三線城市
2  46035  二線城市
3   2459  一線城市
4  22179  三線城市複製程式碼

匯入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)複製程式碼



相關文章