python 运用pandas 库处理excel 表格数据

news/2024/7/21 7:29:10 标签: python, pandas, excel

在这里插入图片描述

文章目录

  • 读取文件
  • 查看数据
  • 数据选择
  • 数据筛选
  • 创建新列
  • 计算并总结数据
  • 分组统计

读取文件

Pandas 是一个强大的数据分析库,它提供了丰富的数据结构和数据分析工具,其中之一是用于读取不同格式文件的 read_* 函数系列。以下是一个简单介绍如何使用 Pandas 读取常见文件格式的示例:

  1. 读取 Excel 文件:

    python">import pandas as pd
    
    # 读取 Excel 文件的第一个表格
    df = pd.read_excel('文件路径.xlsx')
    
    # 打印数据框的前几行
    print(df.head())
    

查看数据

在 Pandas 中,可以使用多种方式来查看 Excel 文件中的 DataFrame 数据以及数据类型。以下是一些常见的方法:

  1. 查看前几行数据(或者后几行):

    使用 head() 函数可以查看 DataFrame 的前几行数据,默认是前五行。你可以通过传递参数来指定显示的行数。

    python">import pandas as pd
    
    # 读取 Excel 文件
    df = pd.read_excel('文件路径.xlsx')
    
    # 查看前五行数据
    print(df.head(5))
    # 查看后5行
    print(df.tail(5))
    
    
  2. 查看数据类型:

    使用 dtypes 属性可以查看 DataFrame 中每一列的数据类型。

    python"># 查看数据类型
    print(df.dtypes)
    
  3. 查看统计摘要:

    使用 describe() 函数可以生成关于数值列的统计摘要,包括均值、标准差、最小值、25%,50%,75% 以及最大值。

    python"># 查看统计摘要
    print(df.describe())
    
  4. 查看单一列的唯一值:

    如果想了解某一列的唯一值,可以使用 unique() 函数。

    python"># 查看某一列的唯一值
    unique_values = df['列名'].unique()
    print(unique_values)
    
  5. 查看整个 DataFrame 的信息:

    使用 info() 函数可以查看 DataFrame 的整体信息,包括每列的非空值数量、数据类型等。

    python"># 查看整个 DataFrame 的信息
    print(df.info())
    

这些方法可以帮助你快速了解 Excel 文件中的数据,其结构以及数据类型。根据需要,选择适当的方法来查看和理解数据。

数据选择

当选择 DataFrame 中的数据时,下面是每个用法的简单例子:

  1. 选择列:

    python"># 创建一个简单的 DataFrame
    import pandas as pd
    
    data = {'Name': ['Alice', 'Bob', 'Charlie'],
            'Age': [25, 30, 35],
            'City': ['New York', 'San Francisco', 'Los Angeles']}
    
    df = pd.DataFrame(data)
    
    # 通过列名选择单列
    single_column = df['Name']
    
  2. 选择多列:

    python"># 选择多列
    multiple_columns = df[['Name', 'Age']]
    
  3. 选择行:

    python"># 通过标签索引选择单行
    single_row_by_label = df.loc[0]
    
    # 通过整数索引选择单行
    single_row_by_integer = df.iloc[0]
    
  4. 选择特定条件的行:

    python"># 选择满足条件的行
    selected_rows = df[df['Age'] > 25]
    
  5. 组合选择:

    python"># 组合条件选择
    selected_data = df[(df['Age'] > 25) & (df['City'] == 'San Francisco')]
    
  6. 选择特定位置的元素:

    python"># 通过标签索引选择元素
    element_by_label = df.at[0, 'Name']
    
    # 通过整数索引选择元素
    element_by_integer = df.iat[0, 0]
    

这些例子演示了如何使用 Pandas 对 DataFrame 进行简单的数据选择。你可以根据具体的数据和需求,灵活运用这些方法。

数据筛选

在 Pandas 中,数据筛选是通过选择满足特定条件的行或列来进行的。以下是一些常见的数据筛选用法:

  1. 根据条件筛选行:

    通过设定条件来选择 DataFrame 中满足条件的行。

    python"># 创建一个简单的 DataFrame
    import pandas as pd
    
    data = {'Name': ['Alice', 'Bob', 'Charlie'],
            'Age': [25, 30, 35],
            'City': ['New York', 'San Francisco', 'Los Angeles']}
    
    df = pd.DataFrame(data)
    
    # 选择年龄大于 30 的行
    filtered_rows = df[df['Age'] > 30]
    
  2. 使用 isin 方法筛选行:

    使用 isin 方法可以选择某一列中包含特定值的行。

    python"># 选择居住在指定城市的行
    selected_cities = df[df['City'].isin(['New York', 'Los Angeles'])]
    
  3. 根据多个条件组合筛选行:

    使用逻辑运算符 &(与)、|(或)、~(非)等来组合多个条件。

    python"># 选择年龄大于 25 且居住在 'San Francisco' 的行
    selected_data = df[(df['Age'] > 25) & (df['City'] == 'San Francisco')]
    
  4. 根据字符串条件筛选行:

    使用字符串方法,如 str.contains,可以在文本列中筛选包含特定字符串的行。

    python"># 选择包含 'Bob' 的行
    selected_rows = df[df['Name'].str.contains('Bob')]
    
  5. 根据索引标签筛选行:

    使用 loc 方法根据索引标签筛选行。

    python"># 设置 'Name' 列为索引列
    df.set_index('Name', inplace=True)
    
    # 选择 'Bob' 的行
    selected_row = df.loc['Bob']
    
  6. 根据列值筛选列:

    使用列名来选择特定的列。

    python"># 选择 'Name' 和 'Age' 列
    selected_columns = df[['Name', 'Age']]
    

这些例子展示了在 Pandas 中进行数据筛选的常见用法。你可以根据实际情况和需求,使用这些方法进行灵活的数据筛选。

创建新列

在 Pandas 中,创建新列可以通过给 DataFrame 分配新的列名,并使用已有列的数据或进行一些计算得到新的列值。以下是一些常见的创建新列的方法:

  1. 使用已有列进行计算创建新列:

    python"># 创建一个简单的 DataFrame
    import pandas as pd
    
    data = {'Name': ['Alice', 'Bob', 'Charlie'],
            'Age': [25, 30, 35],
            'City': ['New York', 'San Francisco', 'Los Angeles']}
    
    df = pd.DataFrame(data)
    
    # 使用已有列 'Age' 创建一个新列 'Age_in_2_years'
    df['Age_in_2_years'] = df['Age'] + 2
    
  2. 使用函数进行计算创建新列:

    可以使用函数对 DataFrame 的一列进行操作,并将结果存储在新列中。

    python"># 创建一个函数,用于计算字符串长度
    def calculate_name_length(name):
        return len(name)
    
    # 使用函数创建新列 'Name_Length'
    df['Name_Length'] = df['Name'].apply(calculate_name_length)
    
  3. 使用条件语句创建新列:

    可以使用条件语句根据某一列的值创建新的列。

    python"># 使用条件语句创建新列 'Is_Adult'
    df['Is_Adult'] = df['Age'] >= 18
    
  4. 根据多列创建新列:

    使用多个已有列的数据进行计算,并创建新的列。

    python"># 使用 'Age' 和 'Name_Length' 列创建新列 'Combined_Column'
    df['Combined_Column'] = df['Age'] * df['Name_Length']
    
  5. 使用 assign 方法创建新列:

    使用 assign 方法可以链式操作,一次性创建多个新列。

    python"># 使用 assign 方法创建多个新列
    df = df.assign(Double_Age=df['Age'] * 2, Triple_Age=df['Age'] * 3)
    

这些方法提供了多种灵活的方式来创建新列,根据你的需求选择适当的方法。创建新列时,考虑数据的来源、计算逻辑以及新列的名称。

计算并总结数据

在 Pandas 中,可以使用一些内建的函数来计算总结数据,包括均值、中位数、标准差等。以下是一些常见的计算总结数据的方法:

  1. 计算列的均值:

    python"># 计算 'Age' 列的均值
    mean_age = df['Age'].mean()
    
  2. 计算列的中位数:

    python"># 计算 'Age' 列的中位数
    median_age = df['Age'].median()
    
  3. 计算列的标准差:

    python"># 计算 'Age' 列的标准差
    std_dev_age = df['Age'].std()
    
  4. 计算列的总和:

    python"># 计算 'Age' 列的总和
    sum_age = df['Age'].sum()
    
  5. 计算列的最小值和最大值:

    python"># 计算 'Age' 列的最小值和最大值
    min_age = df['Age'].min()
    max_age = df['Age'].max()
    
  6. 使用 describe 方法获取统计摘要:

    python"># 使用 describe 方法获取数值列的统计摘要
    summary_stats = df.describe()
    
  7. 计算唯一值的数量:

    python"># 计算 'City' 列中唯一值的数量
    unique_cities_count = df['City'].nunique()
    
  8. 计算唯一值及其出现次数:

    python"># 计算 'City' 列中每个唯一值的出现次数
    city_counts = df['City'].value_counts()
    

这些方法提供了对数据集进行各种总结统计的途径。具体选择哪种方法取决于你关心的统计信息。可以根据实际需求选择适当的函数进行计算。

分组统计

在 Pandas 中,分组统计是一种强大的数据分析工具,允许你根据某一列或多列的值对数据进行分组,然后对每个组进行统计。以下是一些常见的分组统计的方法:

  1. 按单一列分组并计算统计量:

    python"># 创建一个简单的 DataFrame
    import pandas as pd
    
    data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
            'Value': [10, 20, 30, 15, 25, 18]}
    
    df = pd.DataFrame(data)
    
    # 按 'Category' 列分组,并计算每组的均值
    group_means = df.groupby('Category')['Value'].mean()
    
  2. 按多列分组并计算统计量:

    python"># 创建一个带有多列的 DataFrame
    data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
            'City': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
            'Value': [10, 20, 30, 15, 25, 18]}
    
    df = pd.DataFrame(data)
    
    # 按 'Category' 和 'City' 列分组,并计算每组的均值
    group_means = df.groupby(['Category', 'City'])['Value'].mean()
    
  3. 同时计算多个统计量:

    python"># 同时计算均值和标准差
    group_stats = df.groupby('Category')['Value'].agg(['mean', 'std'])
    
  4. 使用 agg 方法应用多个函数:

    python"># 使用 agg 方法应用不同的统计函数
    custom_stats = df.groupby('Category')['Value'].agg(['sum', 'mean', 'count'])
    
  5. 使用 apply 方法应用自定义函数:

    python"># 使用 apply 方法应用自定义函数
    def custom_function(group):
        return group.max() - group.min()
    
    custom_result = df.groupby('Category')['Value'].apply(custom_function)
    
  6. 透视表(Pivot Table):

    python"># 使用透视表计算 'City' 列和 'Category' 列的均值
    pivot_table = df.pivot_table(values='Value', index='Category', columns='City', aggfunc='mean')
    

这些方法提供了丰富的分组统计功能,可以根据不同的需求进行定制化。分组统计对于理解数据的分布、进行对比分析等方面都非常有用。


http://www.niftyadmin.cn/n/5236219.html

相关文章

【开源】基于Vue.js的智慧社区业务综合平台

文末获取源码,项目编号: S 077 。 \color{red}{文末获取源码,项目编号:S077。} 文末获取源码,项目编号:S077。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预…

Github无法打开

文章目录 一、问题二、解决2.1、科学上网(使用中)2.2、使用代理(不稳定)2.3、修改hosts(得更新)2.3.1、找到hosts文件2.3.2、复制hosts文件2.3.3、添加记录2.3.4、替换原来的hosts文件2.3.5、成功访问Githu…

qt 动态生成柱状图

cpp文件 #include "mform.h" #include "ui_mform.h" #include <QBarSeries> #include <QBarSet> #include <QtCharts> #include <QPushButton> #include <QtCharts/QChartView> #include <QtCharts/QPieSeries> #inc…

关于媒体查询不能生效的原因

问题 今天写媒体查询&#xff0c;遇到了个问题&#xff0c;卡了很久&#xff0c;引入三个样式&#xff1a;mainPageCommon.css、mainPageBig.css、mainPageSmall.css。其中的两个样式可以生效&#xff0c;但是小尺寸的媒体查询不能生效&#xff0c;这里很奇怪&#xff01;&…

Spring动态获取代理对象(事务)

小编最近看了一下redis的黑马&#xff0c;觉得这我没涉及过&#xff0c;专门记录一下&#xff0c; //具体的上下文代码去b站找黑马redis入门到实战 P54集 启动类添加 //在启动类添加这个逐渐 这个是暴露代理对象 EnableAspectJAutoProxy(exposeProxy true) pom.xml添加 &l…

Linux docker批量安装软件

1.前提 具备docker-compose.yml 和 prometheus.yml 文件 常见报错&#xff1a; 1.没有配置network 配置network即可&#xff1a; 2.缺少相关依赖 docker-compose.yml加入相关配置 3.重复项 删除掉重复的 最后 执行 等待完成 下载后相当于有了这些软件包的镜像 启动的每…

Swift 常用关键字

目录 一、数据类型 1. 流程控制 2. 访问控制 3. 功能修饰词 4. 错误处理 5. 泛型和类型 6. 其它关键字 二、部分关键字说明 1. guard 2. class 和 struct struct&#xff08;结构体&#xff09; class&#xff08;类&#xff09; 使用场景 3. mutating 4. proto…

Spring一些基础问题整理

备注&#xff1a;针对基本问题做一些基本的总结&#xff0c;不是详细解答&#xff01; 1.Spring Boot与以前的Spring有什么区别&#xff1f; 具体可以见博客&#xff1a; 微服务架构具体实现工具框架&#xff1a;Spring Boot概览与核心原理 https://blog.csdn.net/xiaofeng103…