制作分布图类似密度图,在python中利用pandas来提取分布数据是比较方便的。主要用到pandas的cut和groupby等函数。
第一步,从数据库中提取数据
import pandas
from sqlalchemy import create_engine
host_mysql_test = '127.0.0.1'
port_mysql_test = 3306
user_mysql_test = 'admin'
pwd_mysql_test = '1234'
db_name_mysql_test = 'mydb'
engine_hq = create_engine('mysql+mysqldb://%s:%s@%s:%d/%s' % (user_mysql_test,
pwd_mysql_test,
host_mysql_test,
port_mysql_test,
'hq_db'), connect_args={'charset': 'utf8'})
sql = "SELECT * FROM fund_data where quarter>=8 order by yanzhi desc"
df = pd.read_sql(sql, engine)
#将yanzhi数据转换为百分比
df['yanzhi'] = df['yanzhi'].apply(lambda x: x * 100)
第二步,面元划分
- cut函数:
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)