Python数据数理

今天做了一个使用Python处理数据的小Demo

  1. 我使用的是mysql,先看一下数据库信息
    学生信息表,表名为test11_12
    在这里插入图片描述
    班级专业表,表名test11_12_
    在这里插入图片描述
  2. 使用的Python库有pandas,numpy,首先先看一下要求:
    使用的Python库有pandas,numpy,首先先看一下要求:
    1、使用Python读取数据,添加专业信息。
    2、对为空的数据填充为60分。
    3、处理异常数据,小于0的修改为0,大于100的修改为100。
    4、计算总成绩。
    5、最后导出csv,xls文件。
    以下是处理后的数据展示
    在这里插入图片描述
  3. 进入正题,上代码
import pymysql
import pandas as pd
import numpy as np

db=pymysql.connect("localhost","root","123456","kettle")

# 输出字典,Python小白一个,只能先这样写,不然到下面游标时数据显示的不对
# 加‘pymysql.cursors.DictCursor’是为了输出字典
cur_information=db.cursor(pymysql.cursors.DictCursor)
cur_grade=db.cursor(pymysql.cursors.DictCursor)

# 在此我使用的是分开查询,最后合并,因为numpy处理数据时面对字符串是会报错,不支持

# 输出学生信息
sql01='''SELECT
    test11_12.`学号`,
    test11_12.`姓名`,
    test11_12.`性别`,
    test11_12_.`班级`,
    test11_12_.`专业`
    FROM
    test11_12 inner join test11_12_ on test11_12.班级=test11_12_.班级'''

# 输出学生成绩信息
sql02='''SELECT
    test11_12.`高数`,
    test11_12.`英语`,
    test11_12.`大数据技术`
    FROM
    test11_12 '''

# 这里返回的是int类型的整数,多少行数据
# 以下需要把字典转化为 DataFrame,以便最后数据整合
information01=cur_information.execute(sql01)
information02=pd.DataFrame(cur_information.fetchall())

grade01=cur_grade.execute(sql02)
grade02=pd.DataFrame(cur_grade.fetchall())

db.close()

# 处理空值,填充为60
grade_null=grade02.fillna(60)

# 处理不规则数据,数据范围为0~100,超出100的修改为100,低于0的修改为0
grade_error=np.array(grade_null)
grade_error[grade_error<0]=0
grade_error[grade_error>100]=100
grade03=pd.DataFrame(grade_error)
# print(grade03)

# 求和,处理后的各科成绩求和输出,添加一列的头为‘sum’
grade03['sum']=grade03.apply(lambda  x:x.sum(),axis=1)
grade03.loc['sum']=grade03.apply(lambda x:x.sum())

# 查看一下数据是否处理正常
# print(information02)
# print(grade03)

# DataFrame()数据合并
meger_data=pd.merge(information02,grade03,left_index=True,right_index=True)
# print(meger_data.values.tolist())

# 输出csv
colum=['学号','姓名','性别','班级','专业','高数','英语','大数据技术','成绩总和']

# DataFrame需要转化为list,不添加index=False输出的数据第一列会有索引,不好看,去掉
out_csv=pd.DataFrame(columns=colum,data=meger_data.values.tolist())
out_csv.to_csv('D:/Desktop/Program/Python/Exercise/test/test11_12/data/information.csv',index=False)

# 输出excel,别的方法还不会,这里就用csv文件转为Excel,
out_excel=pd.read_csv('D:/Desktop/Program/Python/Exercise/test/test11_12/data/information.csv',sep=',')
out_excel.to_excel('D:/Desktop/Program/Python/Exercise/test/test11_12/data/information.xls',index=False)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值