小白学python | pandas库中DataFrame用法

一、创建 DataFrame 对象

(1)从字典创建

可以使用字典来创建 DataFrame,其中字典的键将成为列名,字典的值(通常是列表)将成为列数据。例如:
   

import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)

 在这个例子中,data是一个包含name和age两个键的字典。pd.DataFrame(data)创建了一个 DataFrame 对象df,它有两列,name列包含['Alice', 'Bob', 'Charlie'],age列包含[25, 30, 35]。

(2)从列表的字典创建

当数据是一个字典的列表时,每个字典代表一行数据。例如:

data_list = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}, {'name': 'Charlie', 'age': 35}]
df = pd.DataFrame(data_list)
print(df)

这里的data_list是一个包含三个字典的列表,每个字典有name和age两个键值对,创建的 DataFrame 同样有name和age两列,并且每一行对应一个字典中的数据。

(3)从 NumPy 数组创建

如果有 NumPy 数组,可以将其转换为 DataFrame。假设已经有一个二维的 NumPy 数组,并且有对应的列名列表,就可以创建 DataFrame。例如:

     import numpy as np
     np_array = np.array([[1, 2], [3, 4], [5, 6]])
     columns = ['col1', 'col2']
     df = pd.DataFrame(np_array, columns = columns)
     print(df)

这个np_array是一个形状为(3, 2)的二维数组,通过指定columns列表,将数组的列与列名对应起来,创建了一个包含两列col1和col2的 DataFrame。

二、查看 DataFrame 的基本信息

(1)查看头部和尾部数据

可以使用head()和tail()方法来查看 DataFrame 的前几行和后几行数据。默认情况下,head()显示前 5 行,tail()显示后 5 行。例如:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'age': [25, 30, 35, 40, 45]})
     print(df.head())
     print(df.tail(3))

在第一个print语句中,df.head()显示了 DataFrame 的前 5 行数据。在第二个print语句中,df.tail(3)显示了 DataFrame 的后 3 行数据。

(2)查看列名和索引

通过columns属性可以查看列名,通过index属性可以查看索引。例如:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
     print(df.columns)
     print(df.index)

这里df.columns返回一个包含列名name和age的Index对象,df.index返回一个默认从 0 开始的整数索引RangeIndex(start = 0, stop = 3, step = 1)。

(3)查看数据形状和数据类型

shape属性返回 DataFrame 的形状(行数和列数),dtypes属性返回每列的数据类型。例如:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
     print(df.shape)
     print(df.dtypes)

对于这个 DataFrame,df.shape返回(3, 2),表示有 3 行 2 列。df.dtypes返回name列是object类型(通常是字符串),age列是int64类型。

三、选择数据

(1)按列选择

可以通过列名来选择列。例如,使用以下方式选择name列:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
     name_column = df['name']
     print(name_column)

也可以使用[]操作符并传入列名的列表来选择多列,如:

     columns = df[['name', 'age']]
     print(columns)

(2)按行选择

可以使用loc(基于标签)和iloc(基于整数位置)来选择行。例如,使用loc选择索引为 0 的行:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}, index=['a', 'b', 'c'])
     row_a = df.loc['a']
     print(row_a)

如果要使用iloc选择第一行(索引为 0),可以这样做:

     first_row = df.iloc[0]
     print(first_row)

还可以使用切片来选择多行,如df.loc['a':'b']会选择索引从a到b的行(包含a和b),df.iloc[0:2]会选择第一行和第二行(索引为 0 和 1)。

(3)条件选择

可以根据条件来选择满足条件的数据。例如,选择age大于 30 的行:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
     selected_rows = df[df['age']>30]
     print(selected_rows)

在这个例子中,df['age']>30返回一个布尔型的 Series,其中True表示该行的age大于 30。将这个布尔型 Series 作为索引传递给df,就可以选择满足条件的行。

四、数据操作

(1)添加列

可以直接给 DataFrame 对象添加新列。例如,添加一个gender列:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
     df['gender'] = ['F', 'M', 'M']
     print(df)

这里通过df['gender'] = ['F', 'M', 'M']为 DataFrame 添加了一个名为gender的新列,新列的值为['F', 'M', 'M']。

(2)删除列

使用drop()方法可以删除列。例如,删除gender列:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'gender': ['F', 'M', 'M']})
     df = df.drop('gender', axis = 1)
     print(df)

注意drop()方法默认是删除行,所以需要指定axis = 1来表示删除列。

(3)修改列的值

可以通过直接赋值来修改列的值。例如,将age列的值都加 1:

     df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
     df['age'] = df['age']+1
     print(df)

数据排序

(4)按列排序

使用sort_values()方法可以按列的值进行排序。例如,按age列升序排序:

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
sorted_df = df.sort_values('age')
print(sorted_df)

如果要按降序排序,可以指定ascending = False,如df.sort_values('age', ascending = False)。

(5)按索引排序

使用sort_index()方法可以按索引进行排序。例如,当索引是乱序的时候,可以这样排序:   

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]}, index=[2, 1, 0])
sorted_df = df.sort_index()
print(sorted_df)

DataFrame 是 pandas 库中非常强大的数据结构,在数据处理和分析中有着广泛的应用,以上只是一些基本的使用方法,还有很多高级功能可以探索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

無爲謂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值