1.数据的选取
首先,导入数据集
import pandas as pdpath = r'D:\pandas\tmp\StudentsS.xlsx' # 定义一个path,令他等于数据集的地址data = pd.read_excel(path) # 导入Excel格式文件中的数据
1.我们该如何查看学生成绩表中有哪些学生参加了考试呢?(查看学生那一列)
print(data['Name']) # data[col] 以数组Series的形式返回选取的列# 如果想查看年龄就把['Name']更换成['Age']就行了"""0 Student_0011 Student_0022 Student_0033 Student_0044 Student_0055 Student_0066 Student_0077 Student_0088 Student_0099 Student_01010 Student_01111 Student_01212 Student_01313 Student_01414 Student_01515 Student_01616 Student_01717 Student_01818 Student_01919 Student_020Name: Name, dtype: object"""
2.如何只拿到每个学生的姓名和其对应的分数呢?(通过拼接列名)
dataNew = data[['Name', 'Score']] # 以新的数据框的形式返回选取的列print(dataNew)
2.数据的清洗
1.如何检查数据中空值出现的情况?
print(dataNew['Score'].isnull()) # 检查数据中空值出现的情况,并返回一个由布尔值组成的列"""0 False1 False2 False3 False4 False5 False6 True7 False8 False9 False10 True11 False12 False13 True14 False15 False16 True17 False18 False19 FalseName: Score, dtype: bool"""
2.举一反三:之 notnull()
print(dataNew['Score'].notnull()) # 检查数据中非空值出现的情况
3.举一反三:之 dropna()
print(dataNew.dropna()) # 移除数据框DataFrame中包含空值的行# # 横向扫描 只要一行的单元格中有一个NaN就删掉这一行"""如果我们想移除数据框中包含空值的列呢? 那么只要在dropna()括号里填写‘axis=1’ 就可以由行变列啦""""""Name Score0 Student_001 87.01 Student_002 92.02 Student_003 100.03 Student_004 73.04 Student_005 63.05 Student_006 93.07 Student_008 61.08 Student_009 85.09 Student_010 69.011 Student_012 54.012 Student_013 59.014 Student_015 59.015 Student_016 96.017 Student_018 87.018 Student_019 86.019 Student_020 94.0"""
4.如何用0来替换空值呢?
print(dataNew.fillna(0)) # 将数据框中的所有空值替换为0
3.数据的筛选
本次所用文件:
Students.xlsx
首先导入文件:
import pandas as pdstudents = pd.read_excel('tmp\Students.xlsx', index_col='ID')
要求:筛选出年龄大于等于18,小于30,且成绩大于等于85,小于等于100之间的学生
import pandas as pd# 通过自定义函数来进行筛选def age_18_to_30(a):return 18 <= a < 30def level_a(s):return 85 <= s <= 100students = pd.read_excel('tmp\Students.xlsx', index_col='ID')students = students.loc[students['Age'].apply(age_18_to_30)]. \loc[students['Score'].apply(level_a)]print(students)"""Name Age ScoreID2 Student_002 26 926 Student_006 20 939 Student_009 18 8519 Student_019 19 8620 Student_020 20 94"""
import pandas as pd# 通过匿名函数也可以进行筛选students = pd.read_excel('tmp\Students.xlsx', index_col='ID')students = students.loc[students.Age.apply(lambda a: 18 <= a < 30)] \.loc[students.Score.apply(lambda s: 85 <= s <= 100)]print(students)
