pandas數據讀取與存儲

常用數據的讀取

讀取csv文件

//如果包含中文路徑,可能需要加上雙斜槓,文件路徑可以是相對路徑或者絕對路徑

import pandas as pd
data= pd.read_csv(‘D:\py_script\myCSV_01.csv’)

使用read_table讀取數據

data= pd.read_table(‘D:\py_script\myCSV_01.csv’,sep=’,’,header=None,usecols=[1,2],names=[‘date’,‘power’],nrows=10)

其中,sep代表分隔符;header代表表頭,默認不爲空(以第一行作爲表頭,或者說列名),取None,表明全數據,無表頭;usecols選取指定列,這裏選定第2、3列;names用於指定列名;nrows代表取前多少行,這裏取前10行。一般來說,只需要用sep參數就可以正確讀取大部分文件了,像header這些參數一般用的比較少,只有在沒有表頭的時候才需要。

讀取mysql數據(未使用ssh通道)

import pymysql
con =pymysql.connect(
host=‘localhost’,user=‘root’,password=‘root’,database=‘test’,port=3306,charset=‘utf8’)
sql_select = ‘select * from a’
df = pd.read_sql(sql_select, con)

其中,host是主機名,一般填寫ip地址,user代表數據庫用戶名,password代表數據庫密碼,database代表需要連接的數據庫名稱,port代表端口,charset代表編碼格式,一般使用utf8。

讀取excel數據

//讀取多個指定的excel文件tb1和tb2:

excel_data = pd.read_excel(path, sheet_name = [‘tb1’,‘tb2’])
print(‘tb1的數據爲:\n’, excel_data[‘tb1’])
print(‘tb2的數據爲:\n’, excel_data[‘tb2’])

讀取Mongodb數據

import pymongo
import pandas as pd

//連接數據庫,數據庫中的表

client = pymongo.MongoClient(‘localhost’, 27017)
db = client[‘JD’]
table = db[‘iphoneX-comments’]

// 讀取數據

data = pd.DataFrame(list(table.find()))

讀取api接口數據

具體可參考:https://www.jianshu.com/p/00242d5e0480

import requests
token = ‘’‘your token number’’’
url = ‘http://freecityid.market.alicloudapi.com/whapi/json/alicityweather
payload = {‘cityId’: cityId, ‘token’: token}
headers = {‘Authorization’: ‘APPCODE {}’.format(appcode)}
r = requests.post(url, params=payload, headers=headers)

常用數據的存儲

寫入csv文件

// 將數據寫入到csv文件中(csv文件寫入效率比excel文件要高,除非需要使用excel做數據透視表,否則建議將數據存儲到csv文件中)

df.to_csv(‘D:\py_script\myCSV_01.csv’,index = 0)

寫入excel文件

// 將數據寫入到excel文件中(可以使用循環+%s的用法進行批量寫入)

df.to_excel(‘D:\下載\test.xlsx’,index = 0,sheet_name = [‘tb1’])

寫入數據庫中

// 將數據寫入到數據庫中

df.to_sql的正確用法:

(1)下面是正確的用法

from sqlalchemy import create_engine
conn = create_engine(‘mysql+mysqldb://root:password@localhost:3306/databasename?charset=utf8’)
df.to_sql(‘tb_name’, con=conn, if_exists = replace, chunksize=100)

(2)不正確的用法

import pymysql
con = pymysql.connect(host=‘10.129.22.113’,user=‘root’,passwd=‘root’,db=‘dbsheep’,
charset=‘utf8’)
df.to_sql(‘tb_name’, con=con, if_exists = replace, chunksize=100)
conn.close()

原因:根據庫的文檔,我們看到to_sql函數支持兩類mysql引擎一個是sqlalchemy,另一個是sqlliet3.沒錯,在你寫入庫的時候,pymysql是不能用的!!!mysqldb也是不能用的,你只能使用sqlalchemy或者sqlliet3

(3)單條sql語句執行

cur = con.cursor() # 創建遊標
sql = “增刪改查的sql語句”
cur.execute(sql) # 執行sql語句,批量執行可用executemany
con.commit() # 提交到數據庫執行(必須執行,否則數據庫數據無法更新)
con.close() # 關閉數據庫連接(必須釋放連接,不然該表一直處於佔用狀態)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章