我們將使用sakila資料庫,mysql的示例。
借助pyodbc庫(您也可以使用mysqldb庫),我們可以建立到資料庫的連線字串:
#connection to mysql server
import pyodbc
mydb = pyodbc.connect("driver=; server=localhost; port=3306;database=sakila; uid=root; password=12345;")
注意:要使用pyodbc庫,您需要為使用的資料庫系統安裝乙個有效的odbc聯結器。
我們可以做的整潔的事情之一是使用python格式化功能,通過提示使用者輸入使用者名稱和密碼來為連線字串提供引數-避免顯式輸入密碼:
user = input('provide user: \n')
pwd = input('provide password: \n')
mydb = pyodbc.connect("driver=; server=localhost; port=3306;database=sakila; uid=%s; password=%s;" % (user, pwd))
注意,user和pwd將如何替換連線字串中的%s,使其等效於第乙個示例。
要使用pyodbc查詢資料庫,只需建立乙個游標並執行所需的任何查詢。 在示例中,我們將從電影資料庫中選擇「標題和發行年份」(無需顯式資料庫名稱,因為我們在連線中僅與之連線):
cursor = mydb.cursor()
cursor.execute('select title, release_year from film')
在執行查詢之後,我們可以使用以下方法獲得結果:
cursor.fetchall()
但是有乙個警告,cursor.fetchall()返回python列表,而不是儲存**資料的最有效/使用者友好的方法。
#movie name and title returning from query list
[('academy dinosaur', 2006),
('ace goldfinger', 2006),
('adaptation holes', 2006),
('affair prejudice', 2006),
('african egg', 2006)]
我們可以使用以下命令將此物件轉換為pandas dataframe(df):
movies_release_year = pd.dataframe([tuple(t) for t in cursor.fetchall()])
如果檢查movies_release_year的dataframe,則該物件看起來很奇怪,因為它沒有有關該錶的列名或其他元資料。
幸運的是,pandas為我們提供了一種在基礎查詢中將sql表轉換為dataframes的巧妙方法-輸入pandas read_sql_query方法:
movies_release_year = pd.read_sql_query('select title, release_year from film', mydb)
如果您使用movies_release_year.columns和movies_release_year.index檢查movies_release_year的物件元資料,則會得到以下輸出:
#for columns
index(['title', 'release_year'], dtype='object')
#for row indexes
rangeindex(start=0, stop=1000, step=1)
現在,列名正確顯示,我們可以從物件資料框中使用movies_release_year [「 title」]或movies_release_year.title來呼叫它們。sql等效於「select title from film」,但是行索引有些麻煩,自然,我們的查詢沒有讀取「主鍵/索引」。 pandas dataframe索引函式類似於sql表索引,並且要顯式索引的列,我們可以簡單地將引數傳遞給read_sql_query:
movies_release_year = pd.read_sql_query('select film_id, title, release_year from film', mydb, index_col = 'title')
詳情參閱 pandas處理資料
pd.read csv path to file.txt header 0,names ab index 0 names columns這個可以不寫,制定索引列是第一列,這樣就沒有序號 np.tofile d python np.txt 類似於二維列表 充分利用map函式 df.a df.a.map...
pandas 資料處理
pandas中資料可以分為series,dataframe,panel分別表示一維至三維資料。其中在構造時,index表示行名,columns表示列名 構造方式 s pd.series data index index s pd series np random randn 5 index a b ...
Pandas 處理缺失資料
import numpy as np import pandas as pd from pandas import series,dataframes series a b np.nan,c d pd.isnull s 0 false 1 false 2 true 3 false 4 false d...