pandas的數據獲取及保存


表格的讀取及保存

一、讀取表格

pandas內置了10多種數據源讀取函數,常見的就是CSV和EXCEL

pandas讀取出來的數據直接是數據框格式,方便后續的數據處理和分析

可以快速的將數據保存為CSV或者EXCEL格式

參數較多,可以自行控制,但很多時候用默認參數

讀取CSV時,注意編碼,常用編碼為utf-8,gbk,gbk2312等

1.讀取csv文件

df = pd.read_csv('路徑',encoding='',dtype={'':})

encoding表示字符集(編碼),dtype可以選擇每行或列以什么數據類型讀取

例:df = pd.read_csv(r'../雲開見明Python數據分析師課程數據(僅與雲開見明Python數據分析師配套)/第三章/meal_order_info.csv',

encoding='gbk',dtype={'info_id':str,'emp_id':str})

一般會在路徑前加r:聲明后面的字符串是普通字符串,不然可能會被識別為轉義字符

output_content = open(r"C:\learn\test.txt", "a")

除此之外還可以雙斜杠轉義:output_content = open("C:\\learn\\test.txt", "a")

或者使用反斜杠:output_content = open("C:/learn/test.txt", "a")

df.dtypes可以查詢所有列索引下的數據類型

2.讀取excel文件

df = pd.read_excel('路徑',sheet_name='',dtype={'':})

值得一提的是,新版本的pandas庫包中已經刪除了read_excel方法下的encoding參數,所以無需選擇編碼

例:df = pd.read_excel('../雲開見明Python數據分析師課程數據(僅與雲開見明Python數據分析師配套)/第三章/meal_order_detail.xlsx',

sheet_name = 'meal_order_detail1',dtype={'detail_id':str})

關於路徑:

讀取過程中,如果路徑或文件名過長,可以考慮使用os庫包

os.getcwd():可以獲取當前python所在路徑

os.chdir('路徑'):可以更改當前路徑

二、保存表格

語法:df.to_csv('保存后的命名',index=False,encoding='gbk')

df.to_excel('保存后的命名',index=False,encoding='utf8')

值得一提,to_excel中還是需要選擇字符集類型

數據庫的讀取及保存

一、讀取數據庫

讀取數據庫需要用到兩個庫包:

 

import pymysql
from sqlalchemy import create_engine(建立連接

第一個pymysql庫包在Anaconda環境中沒有,所以要自己下載,流程如下:

 

 

 

 

 

和上述圖片相同,即說明庫包安裝成功!

建立連接語法:create_engine('mysql+pymysql://user:password@IP:3306/數據庫名字?charset=utf8')

connect = create_engine('mysql+pymysql://root:Dongwenbo123@localhost:3306/myemployees?charset=utf8')

sql = 'select * from jobs'

df1 = pd.read_sql(sql,connect)

sql表示將myemployees數據庫下的jobs表格中的所有內容全部賦值給sql變量

然后使用pd.read_sql來讀取

每次都這樣讀取很麻煩,所以寫個函數:

 

def query(table):
host = 'localhost'
user = 'root'
password = 'Dongwenbo123'
database = 'myemployees'
port = 3306
connect = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(user,password,host,port,database))
sql = 'select * from ' + str(table)
results = pd.read_sql(sql,connect)
return results

 

二、保存到數據庫

 

 

語法:df.to_sql(name='保存后的文件命名',con=connect,index=False,if_exists='replace')

參數解讀:

df為數據表的名字

index=False表示下標目錄不保存進數據庫(一般都不保存)

if_exists有三個參數:

1、replace(如果數據庫中有重名表格,則替換)

2、fail(如果數據庫中有重名表格,則什么都不做)

3、append:(如果數據庫中有重名表格,則將數據追加到原表的后面)

參數默認為fail,一般推薦使用replace或者fail

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM