保姆級干貨盤點#數據分析零基礎到實戰,Python、Pandas與各類數據庫

今天我們來探索pandas。

一、基本知識概要

  1. SQLAlchemy模塊安裝
  2. 數據庫PostgreSQL下載安裝
  3. PostgreSQL基本介紹使用
  4. Pandas+SQLAlchemy將數據導入PostgreSQL
  5. Python與各種數據庫的交互代碼實現

二、開始動手動腦

1、SQLAlchemy模塊安裝

安裝SQLAlchemy模塊(下面操作都是在虛擬環境下): 方法一:直接pip安裝(最簡單,安裝慢,可能出錯)

pip install SQLAlchemy

方法二:輪子(wheel)安裝(比較簡單,安裝速度還可以,基本不出錯) 點擊這里下載SQLAlchemy的.whl文件,然后移動到你的開發環境目錄下。

pip install xxxxx.whl

方法三:豆瓣源安裝(比較簡單,安裝速度快,方便,推薦)

pip install \-i https://pypi.douban.com/simple/ SQLAlchemy

2、數據庫PostgreSQL下載安裝

(1) 下載地址:https://www.enterprisedb.com/software-downloads-postgres

(2) 下載完成后,點擊安裝文件,基本上就是Next。

First ,安裝目錄,建議自己選擇,不要安裝在C盤。

Second ,Password,可以設置簡單點,畢竟只是用來自己學習。

Third ,端口號,建議不要改,就用5432,改了容易和其他端口沖突,到時候自己又不知道怎么解決,麻煩。

其他沒有說到的就默認設置,Next,Next,Next~安裝過程一般10分鐘左右,不要急。 Finally ,安裝完成后,取消圖上的選項框,圖上的意思是在后臺啟動Stack Builder(堆棧生成器),沒有必要。

最后推薦幾個相關學習網站 Postgre 社區:https://www.postgresql.org/community/ Postgre官方文檔: https://www.postgresql.org/docs/ 易百 Postgre 學習教程:https://www.yiibai.com/postgresql

3、PostgreSQL基本介紹使用

(1) PostgreSQL特點


以上內容截取自 易百 Postgre 學習教程。 (2) 利用PostgreSQL創建一個數據庫 a .打開pgADmin4,發現這個圖形化操作界面是一個Web端的,先會要求輸入Password,就是安裝時候設置的Password。 點擊Servers->PostgreSQL 11->Databases->右鍵->Create->Database

b .輸入數據庫名稱,其他默認,注釋自己隨便寫,我寫的first database,表示我的第一個數據庫。

我們還可以看一下數據庫創建的語句,點擊彈框中的SQL即可。

4、Pandas+SQLAlchemy將數據導入Postgre

(1) Python操作代碼

import pandas as pd  
import sqlalchemy as sa  
  
  
\# 讀取的CSV文件路徑  
r\_filepath \= r"H:\\PyCoding\\Data\_analysis\\day01\\data01\\realEstate\_trans.csv"  
\# 數據庫鑒權  
user \= "postgres"   \# 數據庫用戶名  
password \= "root"   \# 數據庫password  
db\_name \= "test513"   \# 數據庫名稱  
\# 連接數據庫  
engine \= sa.create\_engine('postgresql://{0}:{1}@localhost:5432/{2}'.format(user, password, db\_name))  
print(engine)  
\# 讀取數據  
csv\_read \= pd.read\_csv(r\_filepath)  
\# 將 sale\_date 轉成 datetime 對象  
csv\_read\['sale\_date'\] \= pd.to\_datetime(csv\_read\['sale\_date'\])  
\# 將數據存入數據庫  
csv\_read.to\_sql('real\_estate', engine, if\_exists\='replace')  
print("完成")  
\# 可能報錯:ModuleNotFoundError: No module named 'psycopg2'  
\# 解決方法:pip install psycopg2

(2) 代碼解析

engine \= sa.create\_engine('postgresql://{0}:{1}@localhost:5432/{2}'.format(user, password, db\_name))

sqlalchemy的create_engine函數,創建一個數據庫連接,參數為一個字符串,字符串的格式是:

<database_type>://<user_name>:<password>@<server>:<port>/<database_name>

數據庫類型://數據庫用戶名:數據庫password@服務器IP(如:127.0.0.1)或者服務器的名稱(如:localhost):端口號/數據庫名稱

其中可以是:postgresql,mysql等。

csv\_read.to\_sql('real\_estate', engine, if\_exists\='replace')

pandas的to_sql函數,將數據(csv_read中的)直接存入postgresql,第一個參數指定了存儲到數據庫后的表名,第二個參數指定了數據庫引擎,第三個參數表示,如果表real_estate已經存在,則替換掉。 (3) 運行結果

此外,pandas庫還提供了數據庫查詢操作函數read_sql_query,只需傳入查詢語句和數據庫連接引擎即可,源碼注釋為Read SQL query into a DataFrame.,意思是:把數據庫查詢的內容變成一個DataFrame對象返回。

query \= 'SELECT \* FROM real\_estate LIMIT 10'  
top10 \= pd.read\_sql\_query(query, engine)  
print(top10)

5、Python與各個數據庫的交互代碼

a . Python 與 MySql

\# 使用前先安裝 pymysql 模塊 :pip install pymysql  
\# 導入 pymysql 模塊  
import pymysql  
#連接數據庫,參數說明:服務器,用戶名,數據庫password,數據庫名稱  
db \= pymysql.connect("localhost","root","root","db\_test")  
#使用cursor()方法創建一個游標對象  
cursor \= db.cursor()  
#使用execute()方法執行SQL語句  
cursor.execute("SELECT \* FROM test\_table")  
#使用fetall()獲取全部數據  
data \= cursor.fetchall()  
#關閉游標和數據庫的連接  
cursor.close()  
db.close()

b . Python 與 MongoDB

\# 使用前先安裝 pymongodb 模塊 :pip install pymongodb   
\# 導入 pymogodb 模塊  
import pymongo  
\# 連接數據庫,參數說明:服務器IP,端口號默認為27017  
my\_client \= pymongo.MongoClient(host\="127.0.0.1",port\=27017)  
\# 直接通過數據庫名稱索引,有點像字典  
my\_db \= my\_client\["db\_name"\]    
\# 連接 collection\_name 集合,Mongodb里集合就相當于Mysql里的表  
my\_collection \= my\_client\["collection\_name"\]    
datas \= my\_collection.find() \# 查詢  
for x in datas :  
  print(x)

c . Python 與 Sqlite

\# 使用前先安裝 sqlite3  模塊 :pip install sqlite3  
'''  
sqlite數據庫和前面兩種數據庫不一樣,它是一個本地數據庫  
也就是說數據直接存在本地,不依賴服務器  
'''  
\# 導入 sqlite3 模塊  
import sqlite3  
\# 連接數據庫,參數說明:這里的參數就是數據文件的地址  
conn \= sqlite3.connect('test.db')  
#使用cursor()方法創建一個游標對象  
c \= conn.cursor()  
#使用execute()方法執行SQL語句  
cursor \= c.execute("SELECT \* from test\_table")  
for row in cursor:  
  print(row)  
#關閉游標和數據庫的連接  
c.close()  
conn.close()

三、送你的話

堅持 and 努力 : 終有所獲。

如果文章對你有幫助的話,點個贊再走吧

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容