文章要点
🍺前言
🍁(一)利用pandas将excel中的数据绘制成可视化图形
🔥1.在excel中实现要在python中实现上述在excel中的操作,该如何做呢?下面就让我们在python下实现吧!利用pandas和matplotlib绘制出来的图形更直观。
🔥2.在pandas中实现
- 导入pandas以及matplotlib模块
import pandas as pd from matplotlib import pyplot as plt
- 读取excel表格数据,并将其进行排序
student_data = pd.read_excel('./excel/testpicture.xlsx') df = pd.DataFrame(student_data) # 对数据进行排序 df.sort_values(by=['2016','2017'],inplace=True,ascending=False)
- 绘制图形,并对x轴的说明进行调整
# 绘制条形图 df.plot.bar(x = 'Field',y = ['2016','2017'] , color = ['red', 'blue']) # plt.xticks(rotation = 45,ha= 'right') # 获取x轴,对x轴的说明进行调整,rotation表示倾斜的度数,ha表示水平旋转 ax = plt.gca() ax.set_xticklabels(df['Field'] ,rotation = 45, ha = 'right')
- 设置xy轴以及标题的说明
# 设置xy轴的说明 plt.xlabel('field') plt.ylabel('data of number') # 加标题 plt.title("Student of Number" ,fontsize =20,color = 'green')
- 使图片完整显示(两种方法)
# 对于标签名字太长显示不全,可以用tight_layout()将标签在图中完全显示出来 # plt.tight_layout() # 获取图形,调整图形与边缘的距离 picture= plt.gcf() picture.subplots_adjust(left =0.5 ,bottom = 0.1)
- 保存及展示
plt.savefig('./excel.png') plt.show()
结果:
🍁(二)利用pandas实现多表联合1.python数据分析基础001 -matplotlib的基础绘图
在一个ecxel中可以有很多张表,通常这些表合并在一起又会生成一个新的数据。
实例:将这两张表的学生成绩打印出来
🔥1.在excel中实现
使用VLOOKUOP函数进行联合📌注:在VLOOKUP中若是匹配不到数值,则会进行近似匹配,如上结果所示,21号学生成绩不存在,则近似匹配上一个的值。
若不想近似匹配则将默认值改为True。
=VLOOKUP(A2,Scores!A1:B21,2,FALSE)若要显示为0,则需要用到IFNA函数。
这样就完成了将两表联合查询到了学生的成绩。那么在pandas中该如何实现呢?
🔥2.在pandas中实现
student = pd.read_excel('./excel/testone.xlsx',sheet_name='Students') score = pd.read_excel('./excel/testone.xlsx',sheet_name='Scores')
import pandas as pd student = pd.read_excel('./excel/testone.xlsx',sheet_name='Students') score = pd.read_excel('./excel/testone.xlsx',sheet_name='Scores') df_student = pd.DataFrame(student) df_score = pd.DataFrame(score) # how 表留左边表格数据,on按照id匹配,fillna将没有匹配到的值赋予0 # result = student.merge(score,how='left',on='ID').fillna(0) result = student.merge(score,how='left',left_on='ID',right_on='ID').fillna(0) # 修改Score的数据类型原本为float result.Score = result.Score.astype(int) print(result)
结果:
🍁(三)数据校验
在excel表格中,通常会有一些数据不符合我们的规范要求,从而导致我们的到的数据不准确,因此我们需要将他们筛选出来。那么我们该怎么做呢?
实例:将成绩不符合0-100的数据筛选出来
🔥1.在excel表格中实现
结果:需要找出不符合的数据,在pandas中又如何操作呢?
🔥2.在pandas中实现
import pandas as pd def Score_false(x): if not 100>= x.Score >=0 : print("ID为{},姓名为:{}的学生成绩异常,成绩为:{}".format(x.ID,x.Name,x.Score)) score = pd.read_excel('./excel/testtwo.xlsx') df = pd.DataFrame(score) # axis=1则从行查询 axis=0则从列查询 df.apply(Score_false,axis=1)
结果:
🍁(四)拆分列
🔥1.在excel中实现
那么在pandas中又如何实现呢?
🔥2.在pandas中实现
import pandas as pd test = pd.read_excel('./excel/testthree.xlsx') df = pd.DataFrame(test) name = df['Full Name'].str.split(expand = True) df['firstname'] = name[0] df['lastname'] = name[1] print(df)
结果: