在pandas统计分析中关于DataFrame的常用操作

目录

一、前言

二、DataFrame的创建与加载

2.1从列表和字典创建DataFrame

2.2从CSV文件加载数据

2.3从Excel文件加载数据

三、数据的清洗与转换

3.1缺失值处理

3.2数据类型转换

3.3重复值处理

四、在pandas描述统计常用函数

五、数据的分组与聚合

六、总结




一、前言

      在Python数据分析的世界中,pandas库中的DataFrame无疑是最为核心的数据结构。它以其二维表格的形式,允许我们轻松地加载、清洗、转换、聚合和可视化数据。无论是从CSV文件导入数据,还是对数据进行复杂的统计分析,DataFrame都提供了直观且强大的功能。本文将概述DataFrame的常用操作,旨在帮助读者快速掌握其基础用法,以便更好地利用Python进行数据分析。

二、DataFrame的创建与加载

2.1从列表和字典创建DataFrame

  

参数说明:

  • pd.DataFrame(data, columns=['ID', 'Name', 'Value']):这里data是二维列表,columns参数指定了列名。
  • print(df_from_list):输出创建的DataFrame
  • pd.DataFrame(data):这里data是字典的列表,pandas会自动将字典的键作为列名,字典的值作为数据。
  • print(df_from_dict):输出创建的DataFrame。
  • pd.read_csv('example.csv'):这里'example.csv'是CSV文件的路径(可以是相对路径或绝对路径)。如果CSV文件包含标题行,pandas会自动将其用作列名

   从列表创建DataFrame

当数据以二维列表的形式存在时,我们可以直接将其作为DataFrame函数的参数来创建DataFrame。如果列表中的元素长度不一致,pandas会尝试将其填充为NaN(表示缺失值)。

import pandas as pd  
  
# 假设我们有一个二维列表  
data = [[1, 'A', 100], [2, 'B', 200], [3, 'C', 300]]  
  
# 使用DataFrame函数创建DataFrame  
df_from_list = pd.DataFrame(data, columns=['ID', 'Name', 'Value'])  
  
# 显示DataFrame  
print(df_from_list)

从字典创建DataFrame

当数据以字典的列表形式存在时,其中每个字典代表一行数据,字典的键作为列名,字典的值作为该列的数据。

import pandas as pd  
  
# 假设我们有一个字典的列表  
data = [{'ID': 1, 'Name': 'A', 'Value': 100},  
        {'ID': 2, 'Name': 'B', 'Value': 200},  
        {'ID': 3, 'Name': 'C', 'Value': 300}]  
  
# 使用DataFrame函数创建DataFrame  
df_from_dict = pd.DataFrame(data)  
  
# 显示DataFrame  
print(df_from_dict)

2.2从CSV文件加载数据

pandas提供了read_csv函数来从CSV文件中加载数据到DataFrame。

import pandas as pd  
  
# 假设我们有一个名为'example.csv'的CSV文件  
# 使用read_csv函数加载数据  
df_from_csv = pd.read_csv('example.csv')  
  
# 显示DataFrame  
print(df_from_csv)

2.3从Excel文件加载数据

pandas的read_excel函数可以从Excel文件中加载数据到DataFrame,但需要先安装openpyxl(对于.xlsx文件)或xlrd(对于较旧的.xls文件)库。

import pandas as pd  
  
# 假设我们有一个名为'example.xlsx'的Excel文件  
# 使用read_excel函数加载数据(需要安装openpyxl库)  
df_from_excel = pd.read_excel('example.xlsx', sheet_name='Sheet1')  
  
# 显示DataFrame  
print(df_from_excel)

注意:在运行上述代码之前,你需要确保已经安装了pandas和相应的文件读取库(如openpyxl)。如果还没有安装,可以使用pip进行安装:

三、数据的清洗与转换

3.1缺失值处理

在处理数据集时,缺失值是一个常见的挑战。Pandas提供了fillnadropna两个方法来处理这些缺失值。

fillna方法
fillna方法用于填充DataFrame中的缺失值。你可以指定一个值(如0、平均值、中位数等)来替换缺失值。如果DataFrame中包含多种类型的缺失值(如NoneNaN等),Pandas会统一处理它们。

# 假设df是一个包含缺失值的DataFrame  
df = df.fillna(0)  # 使用0填充所有缺失值
  • dropna方法
    dropna方法用于删除包含缺失值的行或列。默认情况下,它会删除包含任何缺失值的行,但你可以通过参数调整其行为。
  • # 删除包含任何缺失值的行  
    df = df.dropna()  
      
    # 删除'A'和'B'列中同时包含缺失值的行  
    df = df.dropna(subset=['A', 'B'])  
      
    # 删除所有列都为缺失值的行  
    df = df.dropna(how='all')

    3.2数据类型转换

         数据类型的正确性对于数据分析至关重要。使用astype方法,你可以轻松地转换DataFrame中列的数据类型。

# 假设'A'列是字符串类型,但你想将其转换为整数类型  
df['A'] = df['A'].astype(int)  # 注意:这将在能够转换的情况下工作,否则将引发错误  
  
# 假设'B'列是整数类型,但你想将其转换为浮点数类型  
df['B'] = df['B'].astype(float)  
  
# 假设'C'列是整数类型,但你想将其转换为字符串类型  
df['C'] = df['C'].astype(str)
重复值处理

3.3重复值处理

在处理大型数据集时,可能会遇到重复的行。Pandas提供了duplicateddrop_duplicates两个方法来处理重复值。

  • drop_duplicates方法
    drop_duplicates方法用于删除重复的行。默认情况下,它会删除除了第一次出现之外的所有重复行。你可以通过参数调整其行为。
  • # 删除除了第一次出现之外的所有重复行  
    df = df.drop_duplicates()  
      
    # 仅基于'A'和'B'列删除重复行  
    df = df.drop_duplicates(subset=['A', 'B'])  
      
    # 保留最后一次出现的重复行  
    df = df.drop_duplicates(keep='last')  
      
    # 删除所有重复项(即不保留任何重复行)  
    df = df.drop_duplicates(keep=False)

    四、在pandas描述统计常用函数

参数名称参数说明
labels接收单一标签。表示要删除的列或行的索引。
axis接收0或1。表示操作的轴。
inplace接收bool。表示操作是否对原数据生效。

函数名称函数说明函数名称函数说明
min最小值max最大值
mean均值ptp极差
median中位数std标准差
var方差cov协方差
sem标准误差mode众数
skew样本偏度kurt样本峰度
quantile分位数count非空数值数目
describe描述统计mad平均绝对离差

五、数据的分组与聚合

在pandas中,groupby 方法是用于对数据进行分组的强大工具,而分组后的数据则可以使用各种聚合函数(如 sum()mean()count() 等)进行计算。以下是如何使用 groupby 和聚合函数的示例代码:

import pandas as pd  
  
# 创建一个示例DataFrame  
data = {  
    'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'foo', 'foo', 'foo'],  
    'B': ['one', 'one', 'two', 'two', 'one', 'one', 'two', 'two', 'one'],  
    'C': [1, 2, 3, 4, 5, 6, 7, 8, 9],  
    'D': [10, 20, 30, 40, 50, 60, 70, 80, 90]  
}  
df = pd.DataFrame(data)  
  
# 使用groupby方法进行分组  
# 这里我们按列'A'和'B'的值进行分组  
grouped = df.groupby(['A', 'B'])  
  
# 使用聚合函数对分组后的数据进行计算  
# 计算每个分组的'C'列和'D'列的和  
sums = grouped['C', 'D'].sum()  
  
# 同样的,可以计算平均值  
means = grouped['C', 'D'].mean()  
  
# 计算每个分组的行数  
counts = grouped.size()  
  
# 显示结果  
print("Sums:")  
print(sums)  
print("\nMeans:")  
print(means)  
print("\nCounts:")  
print(counts)

六、总结

DataFrame作为pandas库中的核心数据结构,为数据分析和处理提供了极大的便利。通过掌握DataFrame的常用操作,我们可以更加高效地进行数据分析,从数据中发现有价值的信息。希望本文的内容能够帮助读者更好地理解和应用pandas库。

        

  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值