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)
相关文章
|
7天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
23 2
|
7天前
|
数据采集 数据挖掘 数据处理
Python数据分析:Numpy、Pandas高级
在上一篇博文中,我们介绍了Python数据分析中NumPy和Pandas的基础知识。本文将深入探讨NumPy和Pandas的高级功能,并通过一个综合详细的例子展示这些高级功能的应用。
|
7天前
|
数据采集 数据挖掘 数据处理
Python数据分析:Numpy、Pandas基础
本文详细介绍了 Python 中两个重要的数据分析库 NumPy 和 Pandas 的基础知识,并通过一个综合的示例展示了如何使用这些库进行数据处理和分析。希望通过本篇博文,能更好地理解和掌握 NumPy 和 Pandas 的基本用法,为后续的数据分析工作打下坚实的基础。
|
17天前
【Pandas+Python】初始化一个全零的Dataframe
初始化一个100*3的0矩阵,变为Dataframe类型,并为每列赋值一个属性。
13 2
|
5天前
|
SQL 数据采集 JSON
Pandas 使用教程 Series、DataFrame
Pandas 使用教程 Series、DataFrame
9 0
|
6天前
|
存储 数据可视化 数据挖掘
Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化
Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化
14 0
|
13天前
|
Python
[pandas]从多个文件中构建dataframe
[pandas]从多个文件中构建dataframe
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
32 4
|
16天前
|
索引 Python
【Pandas】Pandas Dataframe 常用用法
Pandas DataFrame的常用操作示例,包括筛选数据、索引操作、合并DataFrame、设置和排序索引、文本处理、列重命名、处理缺失值、排序以及删除满足特定条件的行等技巧。
23 0
|
18天前
|
Python
【Pandas】Pandas的DataFrame按行插入list数据或者读取一行并存为csv文件
本文提供了使用Pandas库对DataFrame进行操作的示例代码。
21 0

热门文章

最新文章