python基础案例 - Pandas统计分析基础
例13-1 下面是数据库:stock1(沪深A股交易数据库,收集了我国从1990.12以来,部分A股的日交易数据)中,股票日交易数据表部分列名:
/*--------------股票日交易数据记录------------------*/
CREATE TABLE trDay (
cStockNo char(8) not null, /*股票代码*/
cDay datetime not null, /*交易日期*/
mOpen real not null default 0, /*开盘价*/
mHigh real not null default 0, /*最高价*/
mLow real not null default 0, /*最低价*/
mClose real not null default 0, /*收盘价*/
iVol real not null default 0, /*成交量*/
mm real not null default 0, /*成交额*/
dcChange decimal(8,4) not null default 0, /*换手率*/
dcRate decimal(6,2) not null default 0, /*涨幅*/
constraint trDay_pk primary key(cStockNo,cDay), /*定义主键:cStockNo, cDay */
);
查询股票代码为sh600006(东风汽车)的交易日期、收盘价,显示3条记录
from urllib import parse # 因为密码中含有特殊字符所以需要先进行一步转码
from sqlalchemy import create_engine # 主要用于建立数据库连接引擎
import pandas as pd # 这个库,可以对数据库进行读写操作
userName = 'root'
password = parse.quote_plus('P@ssw0rd') # 密码转码
dbHost = '127.0.0.1'
dbPort = 3306
dbName = 'stock1' # 使用的数据库名
DB_CONNECT = f'mysql+pymysql://{userName}:{password}@{dbHost}:{dbPort}/{dbName}?charset=utf8'
# connStr = "mysql+pymysql://root:P@ssw0rd@127.0.0.1:3306/stock1?charset=utf8"
engine = create_engine(DB_CONNECT) # 数据连接引擎
sql = "select cDay,mClose from trDay where cStockNo ='sh600001' limit 6,3"
trDay = pd.read_sql(sql, con = engine) # 返回为DataFrame对象
print(trDay.values) # trDay.values 为二维数组
print("返回记录行数:",trDay.shape[0])
使用sqlalchemy进行数据库连接时如果password中含有特殊字符例如@,可以先使用urllib将密码转码之后进行拼接。
结果:
数据库查询结果:
例13-1-2:查询股票代码为sh600001的交易数据,查看DataFrame的属性
from urllib import parse
from sqlalchemy import create_engine # 主要用于建立数据库连接引擎
import pandas as pd # 这个库,可以对数据库进行读写操作
userName = 'root'
password = parse.quote_plus('P@ssw0rd')
dbHost = '127.0.0.1'
dbPort = 3306
dbName = 'stock1'
DB_CONNECT = f'mysql+pymysql://{userName}:{password}@{dbHo