Pandas使用DataFrame进行数据分析比赛进阶之路(一)
时间:2022-05-06
本文章向大家介绍Pandas使用DataFrame进行数据分析比赛进阶之路(一),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这篇文章中使用的数据集是一个足球球员各项技能及其身价的csv表,包含了60多个字段。数据集下载链接:数据集
1、DataFrame.info()
这个函数可以输出读入表格的一些具体信息。这对于加快数据预处理非常有帮助。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/soccer/train.csv')
print(data.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10441 entries, 0 to 10440
Data columns (total 65 columns):
id 10441 non-null int64
club 10441 non-null int64
league 10441 non-null int64
birth_date 10441 non-null object
height_cm 10441 non-null int64
weight_kg 10441 non-null int64
nationality 10441 non-null int64
potential 10441 non-null int64
...
dtypes: float64(12), int64(50), object(3)
memory usage: 5.2+ MB
None
2、DataFrame.query()
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/soccer/train.csv')
print(data.query('lw>cf')) # 这两个方法是等价的
print(data[data.lw > data.cf]) # 这两个方法是等价的
3、DataFrame.value_counts()
这个函数可以统计某一列中不同值出现的频率。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/soccer/train.csv')
print(data.work_rate_att.value_counts())
Medium 7155
High 2762
Low 524
Name: work_rate_att, dtype: int64
4、DataFrame.sort_values()
按照某一列的数值进行排序后输出。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/soccer/train.csv')
print(data.sort_values(['sho']).head(5))
5、DataFrame.groupby()
- 根据国籍(nationality)这一列的属性进行分组,然后分别计算相同国籍的潜力(potential)的平均值。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/soccer/train.csv')
potential_mean = data['potential'].groupby(data['nationality']).mean().head(5)
print(potential_mean)
nationality
1 74.945338
2 72.914286
3 67.892857
4 69.000000
5 70.024242
Name: potential, dtype: float64
- 根据国籍(nationality),俱乐部(club)这两列的属性进行分组,然后分别计算球员潜力(potential)的平均值。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/soccer/train.csv')
potential_mean = data['potential'].head(20).groupby([data['nationality'], data['club']]).mean()
print(potential_mean)
nationality club
1 148 76
461 72
5 83 64
29 593 68
43 213 67
51 258 62
52 112 68
54 604 81
63 415 70
64 359 74
78 293 73
90 221 70
96 80 72
101 458 67
111 365 64
379 83
584 65
138 9 72
155 543 72
163 188 71
Name: potential, dtype: int64
值得注意的是,在分组函数后面使用一个size()函数可以返回带有分组大小的结果。
potential_mean = data['potential'].head(200).groupby([data['nationality'], data['club']]).size()
nationality club
1 148 1
43 213 1
51 258 1
52 112 1
54 604 1
78 293 1
96 80 1
101 458 1
155 543 1
163 188 1
Name: potential, dtype: int64
6、DataFrame.agg()
这个函数一般在groupby函数之后使用。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('dataset/soccer/train.csv')
potential_mean = data['potential'].head(10).groupby(data['nationality']).agg(['max', 'min'])
print(potential_mean)
max min
nationality
1 76 76
43 67 67
51 62 62
52 68 68
54 81 81
78 73 73
96 72 72
101 67 67
155 72 72
163 71 71
7、DataFrame.apply()
将某一个函数应用到某一列或者某一行上,可以极大加快处理速度。
import pandas as pd
import matplotlib.pyplot as plt
# 返回球员出生日期中的年份
def birth_date_deal(birth_date):
year = birth_date.split('/')[2]
return year
data = pd.read_csv('dataset/soccer/train.csv')
result = data['birth_date'].apply(birth_date_deal).head()
print(result)
0 96
1 84
2 99
3 88
4 80
Name: birth_date, dtype: object
当然如果使用lambda函数的话,代码会更加简洁:
data = pd.read_csv('dataset/soccer/train.csv')
result = data['birth_date'].apply(lambda x: x.split('/')[2]).head()
print(result)
更多内容欢迎访问我的博客:大黄大黄大黄
- Python filter()函数
- Python reduce()函数
- Python map()函数
- Python iterator迭代器
- How To Implement The Decision Tree Algorithm From Scratch In Python (从零开始在Python中实现决策树算法)
- 『教程』微信小程序webview的使用
- How to Save an ARIMA Time Series Forecasting Model in Python (如何在Python中保存ARIMA时间序列预测模型)
- Decision Trees in Apache Spark (Apache Spark中的决策树)
- Feature Selection For Machine Learning in Python (Python机器学习中的特征选择)
- 简约的JAVA版本MapReduce和日常No.25
- 根据职位说明使用机器学习来检索相关简历
- 微信小游戏初体验
- 一行Spark代码的诞生记(深度剖析Spark架构)
- Ray:AI的分布式系统
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringMVC在web.xml中的配置(引入springmvc)
- springmvc使用DELETE|PUT请求
- Mybatis缓存相关的知识
- 「2020最新」Spring最易学习教程—第一个Spring程序
- idea背景图片及简化插件
- 「2020最新」Spring最易学习教程—IOC 以及 整合Struts2
- SpringBoot整合Mybatis增删改查
- JavaWeb之Maven
- Mirages主题帮助文档
- Java作业-租车小系统
- 「2020最新」Spring最易学习教程 3— 代理设计模式 Spring AOP 动态代理原理
- 初入Mybatis:简介及配置
- Java多线程安全问题
- ajax、axios、fetch三者之间
- Spring Boot项目 Build 不生效的问题