欢迎访问宙启技术站
智能推送

Python数据分析:如何使用pandas库操作数据

发布时间:2023-06-22 20:32:57

Pandas是一个强大的Python库,它提供了灵活的数据结构和数据分析工具,方便处理各种数据操作和分析任务。在数据分析领域中,pandas是最流行的Python数据分析库之一,本文将介绍pandas库的几个重要的数据结构和数据操作方法,以及它们是如何应用于数据分析。

一、pandas库的数据结构

pandas库主要提供了两种数据结构:Series和DataFrame。Series是一种类似于一维数组的结构,它包含了一些类似于列表或数组的序列,并且每个序列都有一个标签作为索引。可以通过以下方式创建一个Series数据结构:

import pandas as pd

s = pd.Series([1,2,3,4,5], index=['a', 'b', 'c', 'd', 'e'])

print (s)

输出结果如下:

a    1

b    2

c    3

d    4

e    5

dtype: int64

DataFrame是一种多维数组和表格型数据结构,类似于SQL表或Excel电子表格。它可以用列表、字典、numpy数组等多种形式来创建,并且它有行和列两个维度的索引。它的一些重要特点包括:

1. 列可以是不同的数据类型。

2. 行和列都有标签(也称为索引)。

3. 可以进行多种加工和转换操作。

可以通过以下方式创建一个DataFrame数据结构:

data = {'name':['Tom', 'Jack', 'Steve', 'Ricky'],'age':[28, 34, 29, 42], 'city':['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']}

df = pd.DataFrame(data, index=['one', 'two', 'three', 'four'])

print (df)

输出结果如下:

       name  age       city

one     Tom   28    Beijing

two    Jack   34   Shanghai

three  Steve  29  Guangzhou

four   Ricky  42   Shenzhen

二、pandas库的数据操作

pandas库提供了许多可以用于数据操作和转换的方法,例如,选择、过滤、排序、分组、合并、聚合等等。

1. 选择和过滤数据

可以通过标签、位置、布尔索引和花式索引等方式选择和过滤数据。

在Series中,可以通过标签或位置选择单个或多个值:

print(s['a']) # 1

print(s[0]) # 1

print(s[['a', 'c']]) # a 1, c 3

在DataFrame中,可以通过列名(标签)、位置、布尔索引和花式索引等方式选择和过滤数据:

print(df['name']) # one       Tom, two      Jack, three    Steve, four     Ricky

print(df.loc[:,['name','age']])  #     name  age, one     Tom   28, two    Jack   34, three  Steve  29, four   Ricky  42

print(df[df['age']>30])  #         name  age       city, two    Jack  34   Shanghai, four  Ricky  42  Shenzhen

2. 排序

可以通过sort_index和sort_values方法根据索引或值对数据进行排序。

在Series中,可以根据索引或值进行排序:

print(s.sort_index()) # a 1, b 2, c 3, d 4, e 5

print(s.sort_values(ascending=False)) # e 5, d 4, c 3, b 2, a 1

在DataFrame中,可以根据一个或多个列中的值进行排序:

print(df.sort_values(by='age')) #       name  age       city, one     Tom   28    Beijing, three  Steve  29  Guangzhou, two    Jack   34   Shanghai, four   Ricky  42   Shenzhen

3. 分组和聚合

使用groupby方法,可以将数据按照一个或多个键进行分组,并对每组数据进行聚合操作。

例如,可以通过以下方式计算每个城市的平均年龄:

print(df.groupby('city')['age'].mean()) # Beijing      28.0, Guangzhou    29.0, Shanghai     34.0, Shenzhen     42.0, Name: age, dtype: float64

4. 合并和连接

使用concat和merge方法,可以将多个DataFrame进行合并和连接。

如果要将两个DataFrame沿着行或列连接,可以使用concat方法:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],

                    'B': ['B0', 'B1', 'B2', 'B3'],

                    'C': ['C0', 'C1', 'C2', 'C3'],

                    'D': ['D0', 'D1', 'D2', 'D3']},

                   index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],

                    'B': ['B4', 'B5', 'B6', 'B7'],

                    'C': ['C4', 'C5', 'C6', 'C7'],

                    'D': ['D4', 'D5', 'D6', 'D7']},

                   index=[4, 5, 6, 7])

print(pd.concat([df1, df2])) #    A   B   C   D,0  A0  B0  C0  D0...

print(pd.concat([df1, df2], axis=1)) #     A   B   C   D   A   B ...

如果要将两个DataFrame沿着一个或多个列进行合并,可以使用merge方法:

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],

                     'A': ['A0', 'A1', 'A2', 'A3'],

                     'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],

                      'C': ['C0', 'C1', 'C2', 'C3'],

                      'D': ['D0', 'D1', 'D2', 'D3']})

print(pd.merge(left, right, on='key')) #   key   A   B   C   D,0  K0  A0  B0  C0  D0... 

三、总结

pandas库提供了许多用于数据操作和分析的方法,它的两个主要数据结构——Series和DataFrame,使得数据的处理和转换变得更加容易。我们可以使用pandas来进行数据的选择、过滤、排序、分组、合并、聚合等任务。在数据分析和处理的过程中,pandas是我们不可或缺的一个强大工具。