表格的讀取及保存
一、讀取表格
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