5.Python数据分析—Pandas数据结构详讲

摘要

Pandas是一个开源的Python数据分析库,提供了高性能、易用的数据结构和数据分析工具。它的主要数据结构包括DataFrame和Series,可以方便地处理各种类型的数据,如数值、字符串、时间序列等。Pandas具有丰富的数据处理功能,如数据清洗、缺失值处理、数据对齐、分组、合并等。Pandas还提供了数据统计和分析功能,如描述性统计、相关性分析、线性回归等。Pandas广泛应用于金融、社会科学、生物信息学等领域的数据分析任务。

个人简介

🏘️🏘️个人主页:以山河作礼
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

简介

Pandas库是Python中用于数据分析的一个极为重要的工具,它在处理表格形式和各种混杂数据方面展现出了强大的功能。
在这里插入图片描述

  • 数据结构:Pandas主要提供了两种数据结构,即Series和DataFrame。Series是一种一维的数据结构,适合存储单列的数据序列,并且拥有一个与之相关的索引。而DataFrame是一个二维的、大小可变的、潜在的异质的表格型数据结构,非常适合于处理含有多列的数据集。这两种结构的设计使得Pandas特别适合用来处理表格型数据,如Excel表格或SQL数据库中的表。
  • 数据处理:Pandas能够轻松地执行数据清洗和转换任务,例如缺失值的处理、数据对齐和操作等。这些功能对于准备数据分析前的预处理步骤至关重要。
  • 数据分析:除了基础数据操作外,Pandas还支持数据的汇总和统计,以及时间序列分析等功能。它允许用户进行分组、合并以及基于复杂逻辑的数据筛选,从而使得数据分析工作更加高效和灵活。
  • 数据可视化:Pandas与Matplotlib等图形库紧密集成,提供了简单的接口来创建多种类型的图表,帮助用户更好地理解数据分布和趋势。
  • 易用性:Pandas设计之初就注重用户体验,其API简洁明了,即使是初学者也能相对容易地上手并应用于实际问题解决中。
  • 社区支持:作为一个开源项目,Pandas有着活跃的社区支持和丰富的文档资源,这对于用户学习和解决问题非常有帮助。

Series

定义和特点

Pandas中的Series是一种带标签的一维数组,它可以存储多种类型的数据,并且每个数据点都有一个对应的索引标签

在这里插入图片描述

Series由两部分组成
一是数据值(values),它们可以是整数、浮点数、字符串或Python对象等类型;
二是索引(index),它用于标记每个数据值,并且可以由整数、字符串、日期等不同类型的标签构成。

Series的特点

  • 索引唯一性:Series的索引是唯一的,不会出现重复的索引标签,这保证了每个数据点都可以被准确地标识和访问。
  • 自动生成索引:如果在创建Series时没有显式指定索引,Pandas会自动创建一个默认的整数索引,从0开始递增。
  • 灵活性:由于Series具有标签,这使得在数据分析过程中可以更加灵活地操作数据。例如,可以通过索引直接访问、修改或删除特定的数据点。
  • 创建方式多样:Series可以通过传递一个数据数组和一个可选的索引数组来创建。如果没有提供索引数组,则会使用默认的整数索引。
  • 数据类型多样性:Series可以包含不同数据类型的元素,这为处理混合类型的数据提供了便利。

Series是Pandas中的基础数据结构之一,它的设计使得数据分析变得更加高效和直观。通过合理的索引管理,可以快速地对数据集进行切片、切块、聚合和分析等操作。

创建方法

创建Series对象的方法有多种,以下是三种常见的方法及其相关代码示例:

  1. 通过直接传递数据
    import pandas as pd
    
    # 创建一个整数类型的Series
    series1 = pd.Series([1, 2, 3, 4, 5])
    
    # 创建一个字符串类型的Series
    series2 = pd.Series(['a', 'b', 'c', 'd'])
    
    # 创建一个混合类型的Series
    series3 = pd.Series([1, 'b', 3.0, True])
    

在这里插入图片描述

  1. 指定索引
    import pandas as pd
    
    # 创建一个带有自定义索引的Series
    index = ['A', 'B', 'C', 'D']
    series = pd.Series([10, 20, 30, 40], index=index)
    

在这里插入图片描述

  1. 通过字典方式创建Series
    import pandas as pd
    
    # 创建一个由字典构成的Series
    data_dict = {'A': 10, 'B': 20, 'C': 30, 'D': 40}
    series = pd.Series(data_dict)
    

在这里插入图片描述

属性和方法

Series对象具有以下属性和方法:

  1. dtype:返回Series中数据的类型。例如,如果Series包含整数,则dtype将返回’int64’。

  2. index:返回Series的索引对象,即标签序列。可以通过该属性获取或设置Series的索引值。

  3. values:返回Series中的数据数组,以NumPy数组的形式表示。可以通过该属性获取或修改Series的值。

  4. name:返回或设置Series的名称。名称是一个可选的属性,用于标识Series。

以下是使用这些属性进行数据操作的示例代码:

import pandas as pd

# 创建一个Series对象
data = [1, 2, 3, 4, 5]
series = pd.Series(data)

# 获取Series的数据类型
print("Data type:", series.dtype)

# 获取Series的索引对象
print("Index:", series.index)

# 获取Series的值数组
print("Values:", series.values)

# 设置Series的名称
series.name = "Numbers"
print("Name:", series.name)

在这里插入图片描述

DataFrame

定义和特点

DataFrame是Pandas库中的一个核心数据结构,它是一个二维表格型数据结构,具有潜在的异质的列和可变的行
在这里插入图片描述

DataFrame由行和列组成,其中每一行代表一个观测,而每一列则代表一个特定的变量或特征。这种结构类似于Excel表格或数据库中的表,使得DataFrame非常适合于处理实际世界中的结构化数据。

DataFrame的特点

  • 维度:DataFrame可以有任意数量的行和列,允许灵活地处理不同规模的数据集。
  • 索引:与Series类似,DataFrame也拥有索引。默认情况下,行索引是自动生成的唯一整数索引,但也可以根据需要自定义索引。
  • 列类型多样性:DataFrame每列的数据类型不必相同,这意味着可以在一个DataFrame中存储不同类型的数据,如数值、字符串、日期等,这为数据分析提供了极大的灵活性。
  • 缺失值:DataFrame可以包含缺失值(NaN),Pandas提供了一系列处理缺失值的方法,如填充、删除等。
  • 数据操作:可以通过各种方法对DataFrame进行操作,如添加、删除列,合并行,切片和切块等,这些操作都非常直观和高效。

创建方法

创建DataFrame对象的方法有多种,以下是几种常见的方法及其相关代码示例:

  1. 通过二维数组
    import pandas as pd
    
    # 创建一个二维数组
    data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    
    # 创建一个DataFrame
    df = pd.DataFrame(data)
    

在这里插入图片描述

  1. 通过列表
    import pandas as pd
    
    # 创建两个列表,分别代表行和列的数据
    data = [['a', 'b', 'c'], [1, 2, 3]]
    
    # 指定列标签
    columns = ['Column1', 'Column2', 'Column3']
    
    # 创建一个DataFrame
    df = pd.DataFrame(data, columns=columns)
    

在这里插入图片描述

  1. 通过字典
    import pandas as pd
    
    # 创建一个字典,其中键是列标签,值是对应列的数据
    data_dict = {
        'Column1': ['a', 'b', 'c'],
        'Column2': [1, 2, 3],
        'Column3': [4.0, 5.0, 6.0]
    }
    
    # 创建一个DataFrame
    df = pd.DataFrame(data_dict)
    

在这里插入图片描述

数据获取和操作

获取DataFrame中的特定行或列的数据可以通过以下方法实现:

  1. 通过索引标签:可以使用loc属性来根据行和列的索引标签获取数据。例如,df.loc[row_label, column_label]可以获取指定行和列的数据。

  2. 通过位置索引:可以使用iloc属性来根据行和列的位置索引获取数据。例如,df.iloc[row_index, column_index]可以获取指定行和列的数据。

  3. 通过切片操作:可以使用切片操作符来获取连续的行或列的数据。例如,df[start:end]可以获取从startend(不包括end)的行数据,而df['column_name']可以获取名为column_name的列数据。

添加、修改或删除行和列的操作可以通过以下方法实现:

  1. 添加行:可以使用append()方法将新的行添加到DataFrame中。例如,df.append(new_row)可以将new_row添加到DataFrame的末尾。

  2. 添加列:可以使用赋值操作符将新的列添加到DataFrame中。例如,df['new_column'] = new_data可以将new_data作为新列添加到DataFrame中。

  3. 修改行或列:可以使用赋值操作符直接修改DataFrame中的行或列。例如,df.loc[row_label, column_label] = new_value可以修改指定行和列的值。

以下是相关代码示例:

import pandas as pd

# 创建一个DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)

# 获取特定行和列的数据
print("Row 1:")
print(df.loc[1])
print("Column 'Age':")
print(df['Age'])

# 添加行
new_row = {'Name': 'David', 'Age': 40, 'City': 'Tokyo'}
df = df.append(new_row, ignore_index=True)
print("DataFrame after adding a row:")
print(df)

# 添加列
df['Country'] = ['USA', 'UK', 'France', 'Japan']
print("DataFrame after adding a column:")
print(df)

# 修改行或列的值
df.loc[2, 'City'] = 'Berlin'
print("DataFrame after modifying a value:")
print(df)

在这里插入图片描述

索引对象

种类和应用

Pandas中的索引对象类别主要有以下几种

  1. Int64Index:整数索引,用于存储整数数据。在数据分析中,它通常用于表示数据的行标签或列标签。

  2. MultiIndex:多级索引,用于存储具有多个级别的索引数据。在数据分析中,它常用于处理具有多个维度的数据,如时间序列数据、分组数据等。

  3. DatetimeIndex:日期时间索引,用于存储日期和时间数据。在数据分析中,它常用于处理时间序列数据,如股票价格、气象数据等。

  4. RangeIndex:范围索引,用于存储连续的整数数据。在数据分析中,它通常用于表示数据的行标签或列标签。

  5. CategoricalIndex:分类索引,用于存储分类数据。在数据分析中,它常用于处理具有离散值的数据,如性别、地区等。

这些索引对象在数据分析中的应用如下

  1. Int64Index和RangeIndex:在数据处理过程中,它们通常用于表示数据的行标签或列标签,方便进行数据筛选、排序等操作。

  2. MultiIndex:在处理具有多个维度的数据时,如时间序列数据、分组数据等,MultiIndex可以方便地表示和操作这些数据。

  3. DatetimeIndex:在处理时间序列数据时,DatetimeIndex可以方便地进行时间相关的计算和操作,如时间差、滑动窗口等。

  4. CategoricalIndex:在处理具有离散值的数据时,CategoricalIndex可以方便地进行分类相关的计算和操作,如分组统计、透视表等。

作用和管理

索引对象在管理轴标签和其他元数据方面的作用

  1. 轴标签:索引对象可以作为DataFrame的行标签和列标签,方便进行数据的筛选、排序等操作。例如,通过指定行标签或列标签,可以快速地获取或修改某一行或某一列的数据。

  2. 元数据:索引对象还可以存储其他元数据信息,如数据的来源、单位等。这些信息可以帮助我们更好地理解和分析数据。

  3. 数据对齐:在进行数据操作时,索引对象可以帮助我们确保数据的对齐。例如,在进行数据合并时,可以通过索引对象来匹配相同标签的数据,从而避免数据错位的问题。

利用索引从Series和DataFrame中获取或重新赋值数据点

  1. 使用loc属性:通过指定行标签或列标签,可以快速地获取或修改某一行或某一列的数据。例如,df.loc[row_label, col_label]可以获取或修改DataFrame中指定位置的数据。

  2. 使用iloc属性:通过指定行索引或列索引,可以快速地获取或修改某一行或某一列的数据。例如,df.iloc[row_index, col_index]可以获取或修改DataFrame中指定位置的数据。

  3. 使用布尔索引:通过指定一个布尔条件,可以快速地获取满足条件的数据。例如,df[df['col_name'] > 0]可以获取DataFrame中某列值大于0的所有行。

  4. 使用切片操作:通过指定一个范围,可以快速地获取连续的数据。例如,df.loc[start:end]可以获取DataFrame中指定范围内的所有行。

  • 42
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以山河作礼。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值