------------Mysql获取数据------------

# pymysql.cursors.DictCursor返回的数据集是包含数据表字段名的字典{};
# [{'area': '上\u3000海'),.......]

# coding: utf-8import pymysql as mysql
import matplotlib.pyplot as pltfrom pandas import DataFrame
from pymysql import cursorsplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 指定默认字体,正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号 # 1、链接mysql数据库,从历年人口变化表(history_count), 按年龄人口统计表(age_count)中取出数据(2分钟)
# 1-1 连接数据库
conn = mysql.connect(host='192.168.0.3', port=3306, user='jiker-coding', passwd='jiker-coding-Pwd-1234',db='coding', charset='utf8',cursorclass=cursors.DictCursor)# 1-2 获取历年人口变化
table = '`coding`.`history_count`'
columns = ['year', 'total', 'man', 'woman', 'city', 'village', ]
sql = "select %s from %s order by year" % (', '.join(["`%s`" % x for x in columns]), table)
cursor = conn.cursor()
cursor.execute(sql)
history_count = cursor.fetchall()# 1-3 获取按年龄人口统计
table = '`coding`.`age_count`'
columns = ['area', 'age0_14', 'age15_59', 'age60', 'age65', ]
sql = "select %s from %s order by area" % (', '.join(["`%s`" % x for x in columns]), table)
cursor = conn.cursor()
cursor.execute(sql)
age_count = cursor.fetchall()cursor.close()
conn.close()print("[任务1 :: 获取历年人口变化]  =", len(history_count), "  [按年龄人口统计] =", len(age_count), "\n\n")

【项目一】折线图、饼图

------------Pandas处理数据------------

df_history_count = DataFrame(history_count)
df_age_count = DataFrame(age_count)# 打印数据为,DataFrame是一个表格型的数据结构,DataFrame即有行索引也有列索引
#   area      age0_14 age15_59  age60  age65
#0   上 海    9.80    66.82  23.38  16.28
#1   云 南   19.57    65.52  14.91  10.75# 按年龄统计人口数量
df_age_count_group = df_age_count.drop('area', axis=1, inplace=False)  # 去掉area列
df_age_count_group['age60_65'] = df_age_count_group['age60'] - df_age_count_group['age65']  # 求出60-65岁占比
df_age_count_group = df_age_count_group.mean()  # 按列求平均
del df_age_count_group['age60']

# 删除列(方法1),增加列,求平均值,删除列(方法2)
# 输出 折线图
df_history_count
# 输出 饼图
df_age_count_group

【项目二】 柱状图

# 2、统计各个发卡机构交易成功的笔数和金额并筛选出成功交易笔数排名前10的发卡机构 (3分钟)

df_trade_infos = DataFrame(trade_infos)
result = df_trade_infos.groupby('ISS_INS_ID_CD').agg({'TRANS_ST': 'count', 'TRANS_AT': 'sum'})
result = result.sort_values(['TRANS_ST'], ascending=False).head(10)

# ISS_INS_ID_CD    发卡机构
# TRANS_ST    交易状态,[TRANS_ST]=1 为交易成功
# TRANS_AT    交易金额

# 输出 柱状图
# 交易成功且笔数发卡机构和交易金额排名前10
                TRANS_ST     TRANS_AT
ISS_INS_ID_CD                       
801020000         45369  10567549022
801059999         24372   4021232077

【项目四】 柱状图

# 2、统计出不同年龄、不同学历金融借贷逾期概率 (3分钟)df_bad_loan_infos = DataFrame(bad_loan_infos)
total_num = len(df_bad_loan_infos)# 过滤逾期信息
overtime_df = df_bad_loan_infos[df_bad_loan_infos['past_due_days'] > 0]# 按年龄打标签
overtime_df.loc[(overtime_df.age >= 18) & (overtime_df.age <= 25), 'AgeGroup'] = '18-25'
overtime_df.loc[(overtime_df.age >= 26) & (overtime_df.age <= 30), 'AgeGroup'] = '26-30'
overtime_df.loc[(overtime_df.age >= 31) & (overtime_df.age <= 40), 'AgeGroup'] = '31-40'
overtime_df.loc[(overtime_df.age >= 41), 'AgeGroup'] = '41+'# 按年龄分组统计
age = overtime_df[['AgeGroup', 'loan_id']].groupby('AgeGroup').agg('count')# 按年龄计算逾期概率
ratio_18_25 = round(age.at['18-25', 'loan_id'] / total_num * 100.0, 2)
ratio_26_30 = round(age.at['26-30', 'loan_id'] / total_num * 100.0, 2)
ratio_31_40 = round(age.at['31-40', 'loan_id'] / total_num * 100.0, 2)
ratio_41 = round(age.at['41+', 'loan_id'] / total_num * 100.0, 2)

# 输出 柱状图

# 数据筛选 data[data["past_due_days"]>0]
# 打标签 data.loc[(data.age >=18) & data.age <= 25,"AgeGroup"] = "18-25"
# 分组统计 data[["AgeGroup","loan_id"]].groupby("AgeGroup").agg("count")
# 分组计算比例 round(age)

【项目五】 K线图

# 2、统计出大阳线的位置(涨幅大于1.5%为大阳线)(3分钟)df_klines = DataFrame(stock_klines)
df_klines['big_yang'] = 0 # 大阳线(初始化)
df_klines['wave_range'] = 0 # 涨跌幅,涨跌幅=(今日收盘价-昨日收盘价)/昨日收盘价*100%(初始化)# 修复第一根k线数据,昨日收盘价为0
df_klines.loc[df_klines['yclose']==0, 'yclose'] = df_klines.loc[df_klines['yclose']==0]['close']
# 涨跌幅计算
df_klines['wave_range'] = (df_klines['close'] - df_klines['yclose']) / df_klines['yclose'] * decimal.Decimal(100.0)# 涨跌幅>1.5%为大阳线
df_klines.loc[(df_klines['wave_range']>=1.5) & (df_klines['close']>df_klines['open']), 'big_yang'] = 1

# 读题目,理解题目

【项目七】 柱状图

# 2、整理房价走势数据,计算出房价增长率,按房价增长率降序排列(3分钟)

df_house = DataFrame(house_prices)
df_house['wave_range'] = pd.to_numeric((df_house['end_price'] - df_house['start_price']) / df_house['start_price'] * decimal.Decimal(100.0), errors='coerce')
df_house = df_house.sort_values(by=['wave_range'], ascending=[False])
df_house = df_house.round({'wave_range': 2})print("[任务2:热门城市房价涨跌幅]")
print(df_house[['city', 'wave_range']], "\n\n")

# start_price 净值日期
# end_price 累计净值

# to_numeric 到数字,round(num,2)
# decimal.Decimal 十进制 十进制
# coerce 强迫,迫使
# sort_values 排序

数据分析 学习小结记录相关推荐

  1. 感知机(Perceptro)二分类算法原理学习小结记录

    感知机是非常古老的一个二分类算法,原理非常简单,直观地来说,对于平面上的两类数据点,找到一条直线来将其划分开来,对于空间中的点,用一个平面来将两部分完全划分开,这样的数据都是线性可分的,也就是在平面或 ...

  2. 回归分析什么时候取对数_技术派|SPSS数据分析心得小结及心得分享!必备收藏...

    作者:徐定德 来源:经管之家,欢迎转载,欢迎分享. 学习数据分析之spss分析工具,可真的不是一般的功夫,真的要很认真和很细心才能做得好spss.下面我来和大家分享一下关于SPSS数据分析心得小结,希 ...

  3. 数据科学导论学习小结——其一

    数据科学导论学习小结--其一 这是笔者大学二年级必修科目<数据科学基础>个人向笔记整理的第一部分,包含前三个章节.本笔记内容基于清华大学出版社<数据科学导论-探索数据的奥秘>的 ...

  4. 【转载】Hyperledger学习小结

    Hyperledger学习小结 自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了.因为没有实际项目参与的话,差不多也就到此为止了.后续可能会去了解一下以太坊的技术 ...

  5. MPU6050原始数据分析——学习笔记

    MPU6050原始数据分析--学习笔记 个人学习笔记 MPU6050简介 原始数据分析 加速度计 陀螺仪 代码 个人学习笔记 用于记录自己学习的成果,并且分享给大家一起看看.希望对看到这篇的朋友有所帮 ...

  6. Kettle学习之记录集连接

    Kettle学习之记录集 在kettle的表输入中,作数据的抽取往往会用到JOIN条件,即LEFT JOIN ,RIGHT JOIN等.在kettle中,记录集组件可以当作JOIN条件使用,特别是当两 ...

  7. 机器学习/深度学习/图机器学习 学习小结

    目录 前言 学习小结 一.机器学习部分 二.深度学习部分 三.图神经网络 概念清晰!概念清晰!概念清晰! 磨刀不误砍柴工! 最难的是开始,最简单的也是开始! 前言 历时将近一年吧,因为疫情原因在家,终 ...

  8. JavaSE学习小结二

    JavaSE学习小结二 记录学习----------JavaSE模块三&四 其中大部分是一些工具类,会将常用方法及其功能描述整理成表格方便日后查阅 文章目录 JavaSE学习小结二 一.Obj ...

  9. 【自学者】学习小结(关于深度学习、视觉和学习体会)

    以下仅仅是考研上岸到开学一个月期间的自学体会,仅作为参考,仅代表当时观点,不代表现在观点,有空的话我会出一期现在的一些小建议博客,仅作为小建议,本人不是很厉害,只是想分享当时的经验,大佬请自动绕过,最 ...

最新文章

  1. pandas loc()与iloc用法
  2. Confluence 6 SQL Server 测试你的数据库连接
  3. 《剑指offer》c++版本 6.从尾到头打印链表
  4. CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录(第二次)
  5. windows下的工具链 树莓派_7. windows下 influxDB 操作工具 InfluxDBStudio
  6. centos7上的图形化界面svn客户端_基于windows平台的SVN教程。
  7. PyCharm——项目管理
  8. MyBatis中大于和小于号的转义写法
  9. 字子序列中英翻译模型(五笔特征)
  10. 用HTML5编写日历,js编写当天简单日历效果【实现代码】_javascript技巧
  11. 数据分析-淘宝用户行为分析
  12. java导出文件到excel文件怎么打开_java导入、导出Excel文件
  13. 前端入门参考:写给前端入门者的chat
  14. 图片分析——现代家居风水学[图文]居家必然之奇术
  15. SSH——Hibernate初学者之旅(四)
  16. (1)定义圆Circle类,包含radius半径属性,求面积方法,求周长方法,返返回圆对象的详细信息的方法(2)在测试类中创建长度为5的Circle[]数组,用来装5个圆对象
  17. Ucenter通信失败(终极解决)
  18. 水深则流缓,人贵则语迟,有悟性的人请进
  19. 读书笔记——阿加莎·克里斯蒂(英国)《控方证人》
  20. 科研实验如何起草一份通俗易懂的SOP?

热门文章

  1. 软件工程改错题例题:请将下面的非结构化程序改成结构化程序
  2. android 仿微信选取相册_Android类似微信图片选择器
  3. 《设计模式》(精华集)
  4. Java实现爬取哔哩哔哩视频信息程序
  5. Win+R命令之后的新世界
  6. [总结]mac pro 提示“USB设备已停用”导致外接显示器黑屏
  7. easyUI打开tab页面
  8. 大龄程序员转行的开始
  9. threejs正方体六面贴图
  10. 2022年化工自动化控制仪表考试模拟100题及在线模拟考试