目錄
1 概述. 2
2 數據結構:series和dataframe 3
3 數據取值. 4
4 數據操作. 8
5 結構調整. 17
6 統計函數. 19
7 相互關係. 21
8 文件讀取. 22
9 數據集操作. 25
10 字符串操作. 28
11 繪圖matplot 30
12 時間序列處理. 37
—————我是分割線—————
NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,主要用於數組運算。支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
pandas 是基於NumPy 的一種工具,該工具是為了解決數據分析任務而創建的,,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成為強大而高效的數據分析環境的重要因素之一。
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
Series:一維數組。
DataFrame:二維數組。
Panel:三維數組。
pd.DataFrame(values,index,columns)
加載:read,保存:to。
def load_csv_app(filename):
"""
日誌格式:time type [uri] - ==> Preparing: SQL
2019-11-05 15:38:00,200 DEBUG [framework.system.dao.RoleDao.findList] - ==> Preparing: SELECT a.id, a.office_id AS "office.id", a.name, a.enname, a.func_type, a.data_type, a.remarks, a.create_by AS "createBy.id", a.create_date, a.update_by AS "updateBy.id", a.update_date, a.del_flag, o.name AS "office.name", o.zzjgdm, a.state_flag , ro.office_id AS "officeList.id" FROM sys_role a LEFT JOIN sys_office o ON o.id = a.office_id LEFT JOIN sys_role_user ur ON ur.role_id = a.id LEFT JOIN sys_user u ON u.id = ur.user_id LEFT JOIN sys_role_office ro ON ro.role_id = a.id WHERE a.del_flag = ? AND a.state_flag=? AND u.id = ? AND u.login_name = ? ORDER BY o.sort, a.name
"""
df = pd.read_csv(
filename,
sep='Preparing: ',
engine='python',
na_values='-',
header=None,
usecols=[0,1],
names=['info', 'sql'],
converters={
'info': parse_info,
'sql': parse_sql
}
)
return df
x = pd.DataFrame()
event = {}
event['a'] = 2
event['b'] = 3
x = x.append(event,ignore_index=True)
數據取值按照行、列索引的原則分別取值
pandas使用sqlalchemy、pymysql操作mysql資料庫。
pymysql:實現Python能夠操作MySQL資料庫。
sqlalchemy:實現與不同資料庫的連接。當前的推薦用法。
創建連接:create_engine()
pandas讀取數據:read_sql_query()函數實現了對資料庫的查詢。
pandas寫入數據:to_sql()函數實現了對資料庫的寫入。
1) 安裝
pip install pandas
pip install sqlalchemy
pip install pymysql
2) 連接
import pandas as pd
from sqlalchemy import create_engine
# 初始化資料庫連接
# 按實際情況依次填寫MySQL的用戶名、密碼、IP位址、埠、資料庫名
engine = create_engine('mysql+pymysql://root:12345678@localhost:3306/testdb')
# 如果覺得上方代碼不夠優雅也可以按下面的格式填寫
# engine = create_engine("mysql+pymysql://{}:{}@{}:{}/{}".format('root', '12345678', 'localhost', '3306', 'testdb'))
3) 取值
# MySQL導入DataFrame
# 填寫自己所需的SQL語句,可以是複雜的查詢語句
sql_query = 'select * from product;'
# 使用pandas的read_sql_query函數執行SQL語句,並存入DataFrame
df_read = pd.read_sql_query(sql_query, engine)
print(df_read)
4) 寫入磁碟
df_read.to_csv('story3.csv', encoding = 'utf-8', index = False)
5) 寫入資料庫
# DataFrame寫入MySQL
# 新建DataFrame
df_write = pd.DataFrame({'id': [10, 27, 34, 46], 'name': ['張三', '李四', '王五', '趙六'], 'score': [80, 75, 56, 99]})
# 將df儲存為MySQL中的表,不儲存index列
df_write.to_sql('testdf', engine, index=False)