#检查配置环境
pip show numpy
pip show pandas
pip show matplotlib
一、Pandas数据分析
pandas 是一种基于Numpy的开源的数据分析工具包,提供了高性能、简单易学的数据结构和数据分析函数。
1、Series对象
(1)定义和创建
(2)数据访问
(3)常用方法
(1)定义和创建
series对象是一种带有标签数据的一维数组,标签在Pandas中有对应的数据结构类型“Index”,series;类似于一维数组与字典的结合。
#导入库
import numpy as ny #导入科学计算库numpy 别名np
import pandas as pd #数据分析库Pandas 别名pd
import matplotlib.pyplot as plt #数据可视化库matplotlib里面的绘图模块pyplot 别名plt
pd.Series([45,89,31,65,32],index = ['a','b','c','d','e'])
#用一堆数组定义Series对象,默认标签为 0 ,1 ,2 ,但也可以自己定义
pd.Series([45,89,31,65,32],index = list('acefd'))
str = 'tangmeilin'
list(str) #将字符串强行转化成列表类型
names = ['aa','cc','dd','ff','ee']
ages = [54,98,65,32,21]
pd.Series(ages,names)
data_0 = pd.Series({'aa':54,'cc':98,'dd':65,'ff':32,'ee':21})
data_0
(2)数据访问
data_0.index #根据属性访问标签
data_0.values #根据属性访问标签
data_0.ndim #维度
data_0.shape #形状返回的式元组
data_0.size #个数
data_0.keys() #用字典keys()访问标签
list(data_0.items()) #用items()方法访问标签
data_0.sort_index() #根据对象标签排序 , 但不改变原始数据的顺序
data_0.sort_values(ascending=False) #根据对象的数据值排序,默认为升序ascending=False为降序
data_0.rank()
2、DataFrame对象
(1)定义和创建
(2)数据访问
(3)常用方法
(4)常见操作
(1)定义和创建
DataFrame 可以看作是一种既有行索引,又有列索引的二维数组,类似于Excel表或关系型数据库中的二维表,是Pandas中最常用的基本结构。
numbers =[1,2,3,4,5]
names = ['aa','cc','dd','ff','ee']
ages = [54,98,65,32,21]
classes = ['1班','2班','3班','4班','5班']
s_0 = pd.Series(numbers)
s_1 = pd.Series(names)
s_2 = pd.Series(ages)
s_3 = pd.Series(classes)
print(s_0) #直接从内存中读取数据,没有对外输出,会被后面的输出数据覆盖
s_0
print(s_1) #将数据输出到客服端
s_1
print(s_2) #直接从内存中读取数据,没有对外输出,会被后面的输出数据覆盖
s_2
print(s_3) #直接从内存中读取数据,没有对外输出,会被后面的输出数据覆盖
s_3
print(pd.DataFrame({'学号':s_0,'姓名':s_1,'年龄':s_2,'班级':s_3})) #用对象创建DataFrame对象
data_2 = pd.DataFrame({'学号':numbers,'姓名':names,'年龄':ages,'班级':classes},index = list('abcde'))
data_2
#用数组创建
(2)数据访问
data_2
data_2[['姓名','学号']]
data_2.姓名
data_2['姓名']['c'] #根据具体的行列名称访问
data_2.loc['c','姓名'] #显式索引 :根据行列名称访问,行在前列在后
data_2.iloc[0:3,1:3]
(4)常见操作
(1)Pandas中的缺失值处理
(2)Pandas中的分组操作
(3)Pandas中的数据合并操作
P287 12.10
#导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data_1 = pd.read_excel('../Stu_pack/pandas/exer_1.xlsx',skiprows = 1) #读取数据文件
data_2 = pd.read_excel('../Stu_pack/pandas/exer_2.xlsx',skiprows = 1)
data_1
data_2
# data_3 = pd.merge(data_1,data_2) #根据相同列名合并数据
# data_3
data_1.join(data_2.set_index('姓名'),on = '姓名')
#(2)实现按总分或语文、数学、英语单科成绩从高到低排序的功能
def sort(df,col):
ss = df.sort_values(by = col,ascending=False) #将DataFrame对象DF按照某列的数值排序,默认为升序,将ascending设置为False降序(从高到低)
return ss
col = input('请输入您要排序的列名:')
sort(data_3,col) #调用函数,将实参传递给形参
#(3)打印所有存在不及格科目(单科<60分)的学生记录
data_3[(data_3['语文']<60)| (data_3['数学']<60)|(data_3['英语']<60)]