掌握DataFrame的常用操作

一、前言

     DataFrame是Pandas库中的一个核心数据结构,它可以看作是一个二维的表格型数据结构,或者一个带有标签的二维数组。在DataFrame中,每一列都有一个唯一的列名,每一行都有一个唯一的行索引。这使得我们可以方便地通过列名或行索引来访问、修改和删除数据。

二、创建DataFrame的基本操作

DataFrame的基础属性有values、index、columns和dtypes,分别可以获取元素、索引、列名和数据类型。

程序代码如下:

import pandas as pd  
  
data = {  
    'Name': ['Alice', 'Bob', 'Charlie'],  
    'Age': [25, 30, 35],  
    'City': ['New York', 'San Francisco', 'Los Angeles']  
}  
  
df = pd.DataFrame(data)  
print(df)
from sqlalchemy import create_engine
import pandas as pd

2.1数据筛选

# 筛选年龄大于30岁的行  
filtered_df = df[df['Age'] > 30]  
print(filtered_df)

2.2数据排序

sorted_df = df.sort_values(by='Age', ascending=False)  
print(sorted_df)

另外,T属性能够实现DataFrame的转置(行、列转换)。在某些特殊场景下,某些函数或方法只能作用于列和行,此时即可试着用转置来解决这一问题,使用T属性进行转置。

程序代码如下:

print('音乐行业收入信息表转置前形状为: \n', musicdata.shape)
print('音乐行业收入信息表转置后形状为: \n', musicdata.T.shape)

三、DataFrame的高级应用

3.1数据分组与聚合

使用groupby()方法,我们可以根据一个或多个列的值将数据分成多个组,并对每个组进行聚合操作(如求和、平均值、计数等)。以下是一个按城市分组并计算每个城市人数的示例:

grouped_df = df.groupby('City').size()  
print(grouped_df)

3.2数据合并与链接

# 假设我们有一个包含城市人口数据的DataFrame  
population_data = pd.DataFrame({  
    'City': ['New York', 'San Francisco', 'Los Angeles'],  
    'Population': [8622698, 881549, 3999759]  
})  
  
# 使用merge()方法合并两个DataFrame  
merged_df = pd.merge(df, population_data, on='City')  
print(merged_df)

3.3数据转换与映射

df['Age'] = df['Age'].apply(lambda x: x + 1)  
print(df)

程序代码如下:

3.4更改DataFrame中的数据

1.使用位置索引

import pandas as pd  
  
# 创建一个简单的DataFrame  
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}  
df = pd.DataFrame(data)  
  
# 使用iloc(基于整数位置的索引)更改数据  
df.iloc[0, 0] = 10  # 将第一行第一列的值更改为10

2.使用标签索引:

# 使用loc(基于标签的索引)更改数据  
df.loc[0, 'A'] = 100  # 将第一行'A'列的值更改为100

3.更改整列或整行的数据

# 更改整列的数据  
df['A'] = df['A'] + 1  # 将'A'列的所有值增加1  
  
# 更改整行的数据(需要先选择行)  
df.iloc[0] = [1000, 40]  # 将第一行的所有值更改为[1000, 40]

4.使用条件来更改数据:

# 将所有'A'列中大于2的值更改为0  
df.loc[df['A'] > 2, 'A'] = 0

5.使用replace方法更改数据:

# 将'A'列中所有的2替换为'two'(注意这里数据类型会发生变化)  
df['A'].replace(2, 'two', inplace=True)

6.使用assign方法添加或更改列

# 添加一个新列'C',并将所有值设置为1  
df = df.assign(C=1)  
  
# 更改列'B'的值(注意这里不会在原地修改,而是返回一个新的DataFrame)  
df = df.assign(B=df['B'] * 2)

7.使用atiat方法更改单个值:

# 使用at方法(基于标签)更改单个值  
df.at[0, 'A'] = 10000  
  
# 使用iat方法(基于整数位置)更改单个值  
df.iat[0, 0] = 20000

8.使用numpy函数进行元素级操作

import numpy as np  
  
# 将'A'列中的所有元素乘以2  
df['A'] = np.multiply(df['A'], 2)

9.使用apply方法应用函数

# 定义一个函数,将值增加1  
def add_one(x):  
    return x + 1  
  
# 将函数应用到'A'列的每个元素  
df['A'] = df['A'].apply(add_one)  
  
# 或者将函数应用到每一行(axis=1)或每一列(axis=0)  
df = df.apply(lambda x: x * 2, axis=0)  # 应用于列

四、DataFrame重要属性和函数


DataFrame是Pandas一个重要的对象,它的属性和函数很多,下面先简单了解DataFrame的几个重要属性和
函数。重要属性介绍如表3.2所示,重要函数介绍如表3.3所示。
DataFrame是Pandas库中最常用的数据结构之一,它是一个二维的表格型数据结构,类似于电子表格或关系
型数据库中的表。下面是一些DataFrame的重要属性和函数的解释说明

1.属性:

  1. -`shape':返回一个元组,表示DataFrame的维度,即行数和列数。
  2. -`columns:返回一个列表,包含DataFrame的列名。
  3. -`index:返回一个表示DataFrame索引的列表或数组。
  4. -`dtypes`:返回一个Series,其中包含DataFrame每列的数据类型。
  5. -`values':返回一个二维的NumPy数组,包含DataFrame的数据。
  6. -`head(n):返回DataFrame的前n行,默认为前5行。
  7. -`tail(n):返回DataFrame的后n行,默认为后5行。

2.函数:

  1. -`info():打印DataFrame的基本信息,包括索引类型、列名、非空值数量和每列的数据类型。
  2. -`describe()”:计算DataFrame每列的统计摘要信息,包括计数、均值、标准差、最小值、25%分位数、中位
  3. 数、75%分位数和最大值。
  4. -`head(n)":返回DataFrame的前n行。
  5. -`tail(n):返回DataFrame的后n行。
  6. -`loc[':通过标签获取行或列的数据。例如,“df.loc[2J返回索引为2的行数据,“df.loc[:,'column_nameT返回
  7. 名为'column_name'的列数据。
  8. -`ilocg:通过位置获取行或列的数据。例如,“df.iloc[2J返回位置为2的行数据,“df.iloc[:,T返回位置为1的列
  9. 数据。
  10. -`dropna():删除包含缺失值(NaN)的行或列。
  11. -`fillna(value)”:用指定的值替换缺失值。
  12. -`sort_values(by)':按照指定的列对DataFrame进行排序。
  13. -`groupby(by):按照指定的列对DataFrame进行分组。
  14. -`merge(other_df)”:将两个DataFrame按照共同的列进行合并。
  15. -`pivot_table(values,index,columns):根据指定的值、索引和列创建一个数据透视表。
  16. 这些属性和函数只是DataFrame提供的众多功能的一小部分。通过使用这些属性和函数,你可以对DataFrame进行数据操作、统计分析、数据清洗和转换等操作。详细了解Pandas文档中的DataFrame部分可以帮助你更好地利用DataFrame进行数据处理和分析。

五、总结

通过本文的介绍,我们了解了Pandas库中的DataFrame结构的基本概念、基本操作方法和高级应用。DataFrame为我们提供了一个强大而灵活的工具来处理和分析数据。在实际应用中,我们可以根据具体需求灵活运用这些方法和技巧来处理和分析数据,从而更好地挖掘数据的价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值