1.数据的选取

首先,导入数据集

StudentsS.xlsx

  1. import pandas as pd
  2. path = r'D:\pandas\tmp\StudentsS.xlsx' # 定义一个path,令他等于数据集的地址
  3. data = pd.read_excel(path) # 导入Excel格式文件中的数据

1.我们该如何查看学生成绩表中有哪些学生参加了考试呢?(查看学生那一列)

  1. print(data['Name']) # data[col] 以数组Series的形式返回选取的列
  2. # 如果想查看年龄就把['Name']更换成['Age']就行了
  3. """
  4. 0 Student_001
  5. 1 Student_002
  6. 2 Student_003
  7. 3 Student_004
  8. 4 Student_005
  9. 5 Student_006
  10. 6 Student_007
  11. 7 Student_008
  12. 8 Student_009
  13. 9 Student_010
  14. 10 Student_011
  15. 11 Student_012
  16. 12 Student_013
  17. 13 Student_014
  18. 14 Student_015
  19. 15 Student_016
  20. 16 Student_017
  21. 17 Student_018
  22. 18 Student_019
  23. 19 Student_020
  24. Name: Name, dtype: object
  25. """

2.如何只拿到每个学生的姓名和其对应的分数呢?(通过拼接列名)

  1. dataNew = data[['Name', 'Score']] # 以新的数据框的形式返回选取的列
  2. print(dataNew)

2.数据的清洗

1.如何检查数据中空值出现的情况?

  1. print(dataNew['Score'].isnull()) # 检查数据中空值出现的情况,并返回一个由布尔值组成的列
  2. """
  3. 0 False
  4. 1 False
  5. 2 False
  6. 3 False
  7. 4 False
  8. 5 False
  9. 6 True
  10. 7 False
  11. 8 False
  12. 9 False
  13. 10 True
  14. 11 False
  15. 12 False
  16. 13 True
  17. 14 False
  18. 15 False
  19. 16 True
  20. 17 False
  21. 18 False
  22. 19 False
  23. Name: Score, dtype: bool
  24. """

2.举一反三:之 notnull()

  1. print(dataNew['Score'].notnull()) # 检查数据中非空值出现的情况

3.举一反三:之 dropna()

  1. print(dataNew.dropna()) # 移除数据框DataFrame中包含空值的行
  2. # # 横向扫描 只要一行的单元格中有一个NaN就删掉这一行
  3. """
  4. 如果我们想移除数据框中包含空值的列呢? 那么只要在dropna()括号里填写‘axis=1’ 就可以由行变列啦
  5. """
  6. """
  7. Name Score
  8. 0 Student_001 87.0
  9. 1 Student_002 92.0
  10. 2 Student_003 100.0
  11. 3 Student_004 73.0
  12. 4 Student_005 63.0
  13. 5 Student_006 93.0
  14. 7 Student_008 61.0
  15. 8 Student_009 85.0
  16. 9 Student_010 69.0
  17. 11 Student_012 54.0
  18. 12 Student_013 59.0
  19. 14 Student_015 59.0
  20. 15 Student_016 96.0
  21. 17 Student_018 87.0
  22. 18 Student_019 86.0
  23. 19 Student_020 94.0
  24. """

4.如何用0来替换空值呢?

  1. print(dataNew.fillna(0)) # 将数据框中的所有空值替换为0

3.数据的筛选

本次所用文件:
Students.xlsx
首先导入文件:

  1. import pandas as pd
  2. students = pd.read_excel('tmp\Students.xlsx', index_col='ID')

要求:筛选出年龄大于等于18,小于30,且成绩大于等于85,小于等于100之间的学生

  1. import pandas as pd
  2. # 通过自定义函数来进行筛选
  3. def age_18_to_30(a):
  4. return 18 <= a < 30
  5. def level_a(s):
  6. return 85 <= s <= 100
  7. students = pd.read_excel('tmp\Students.xlsx', index_col='ID')
  8. students = students.loc[students['Age'].apply(age_18_to_30)]. \
  9. loc[students['Score'].apply(level_a)]
  10. print(students)
  11. """
  12. Name Age Score
  13. ID
  14. 2 Student_002 26 92
  15. 6 Student_006 20 93
  16. 9 Student_009 18 85
  17. 19 Student_019 19 86
  18. 20 Student_020 20 94
  19. """
  1. import pandas as pd
  2. # 通过匿名函数也可以进行筛选
  3. students = pd.read_excel('tmp\Students.xlsx', index_col='ID')
  4. students = students.loc[students.Age.apply(lambda a: 18 <= a < 30)] \
  5. .loc[students.Score.apply(lambda s: 85 <= s <= 100)]
  6. print(students)