python pandas 讲解ppt_44.Python编程:Pandas详解

什么是pandas

pandas是python的一个数据分析包,是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。

panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。

简言之,pandas是基于NumPy的,两者是数据分析强大的工具。

pandas安装

pandas安装指令:

pip install pandas

pandas中数据结构Series和DataFrame

pandas中主要有两种数据结构,分别是:Series和DataFrame。

Series

Series:一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。

创建Series对象,用到pandas中的Series()。

通过一维数组创建Series对象

创建数据是一维数组,也可以是字典。前面一文NumPy详解中,已详细学习了NumPy一维数组的各种创建,此处不再赘述。我们只需把创建好的一维数组数据传递过来即可。示例如下:

import pandas as pd

import numpy as np

# Series

# 通过随机数创建numpy数组

arr = np.random.randn(6)

s1 = pd.Series(arr)

print(s1)

print("-" * 20)

# 通过arange()创建numpy数组

arr2 = np.arange(6)

s2 = pd.Series(arr2)

print(s2)

print("-" * 20)

# 通过ones创建numpy的全1数组

arr3 = np.ones(6)

s3 = pd.Series(arr3)

print(s3)

print("-" * 20)

# 通过zeros创建numpy的全零数组

arr4 = np.zeros(6)

s4 = pd.Series(arr4)

print(s4)

运行结果:

0 -1.205245

1 -0.671404

2 -0.056164

3 -0.090229

4 1.004950

5 -1.139511

dtype: float64

--------------------

0 0

1 1

2 2

3 3

4 4

5 5

dtype: int32

--------------------

0 1.0

1 1.0

2 1.0

3 1.0

4 1.0

5 1.0

dtype: float64

--------------------

0 0.0

1 0.0

2 0.0

3 0.0

4 0.0

5 0.0

dtype: float64

说明:

上面例子中,我们在创建Series对象,只提供了数据源,并没有提供索引。此时索引默认是从0开始的数字,依次排序。当然,我们也可以在创建的时候,指定索引:

import pandas as pd

import numpy as np

# Series

# 创建的时候,指定索引

arr = np.random.randn(6)

s5 = pd.Series(arr, index=["一月", "二月", "三月", "四月", "五月", "六月"])

print(s5)

运行结果:

一月 0.088578

二月 0.347118

三月 -1.080161

四月 -0.937341

五月 1.216052

六月 0.646635

dtype: float64

通过字典创建Series对象

上面例子中,我们在创建Series对象,数据源是一维数组,当然我们也可以传入字典来创建Series对象。字典的key就是要生成Series的索引了。

import pandas as pd

# Series

dict_data = {"一月": 11, "二月": 13, "三月": 10, "四月": 14, "五月": 8, "六月": 10}

# 通过字典创建Series对象

s3 = pd.Series(dict_data)

print(s3)

运行结果:

一月 11

二月 13

三月 10

四月 14

五月 8

六月 10

dtype: int64

取值

我们从Series数据结构中取值,可以利用自定义的索引标签,也可以利用默认的位置索引。上面例子中可以这样取值:

# 上接

# 通过标签取值

print(s3["一月"])

# 通过默认的索引序列取值

print(s3[0])

运行结果:

11

11

Series一维数据结构很简单,我们重点去学习二维数据结构DataFrame。

注意:Series中的索引值是可以重复的。

DataFrame

DataFrame:一个二维表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。

DataFrame对象的创建,要用到pandas 中的DataFrame()。需要传入的参数,数据源可以是二维数组,也可以是字典。除此之外,创建的同时也可以指定行索引,列索引。如果不指定索引,将使用默认的索引,从0开始的依次递增的序列号。

import pandas as pd

import numpy as np

# DataFrame

# 利用numpy创建二维数据

arr = np.random.randn(20).reshape((4, 5))

# 利用pandas创建DataFrame对象

df = pd.DataFrame(arr)

print(df)

运行结果:

0 1 2 3 4

0 -1.719292 0.437608 0.512311 -0.658363 -0.114165

1 -0.730688 1.887302 0.495906 0.109294 0.484358

2 2.716056 -2.124497 -0.406951 1.396759 1.621959

3 1.923468 -0.129051 0.218899 2.427141 0.781985

我们可以在创建的同时,可以指定行索引、列索引。示例如下:

import pandas as pd

import numpy as np

# DataFrame

# 利用numpy创建二维数据

arr = np.random.randn(20).reshape((4, 5))

# 行索引

index = ["Q1", "Q2", "Q3", "Q4"]

# 列索引

columns = ["A", "B", "C", "D", "E"]

# 利用pandas创建DataFrame对象

df = pd.DataFrame(arr, index=index, columns=columns)

print(df)

运行结果:

A B C D E

Q1 0.064423 1.633352 -1.705736 1.305984 0.001379

Q2 0.445133 0.452308 1.659449 -0.800272 0.986402

Q3 -0.024076 1.090810 -0.627166 -0.312072 0.242472

Q4 -2.754748 -0.757759 0.689985 -0.001170 -0.136409

常见属性

我们可以获取行索引df.index、列索引df.columns、数据值df.values、数据描述df.describe(),示例如下:

import pandas as pd

import numpy as np

# DataFrame

# 利用numpy创建二维数据

arr = np.random.randn(20).reshape((4, 5))

# 行索引

index = ["Q1", "Q2", "Q3", "Q4"]

# 列索引

columns = ["A", "B", "C", "D", "E"]

# 利用pandas创建DataFrame对象

df = pd.DataFrame(arr, index=index, columns=columns)

print(df)

print("-" * 50)

# 行索引

print(df.index)

# 列索引

print(df.columns)

print("-" * 50)

# 数据值

print(df.values)

print("-" * 50)

# 数据描述信息

print(df.describe())

运行结果:

A B C D E

Q1 0.752826 -1.355122 0.035948 0.839446 0.635179

Q2 -0.496016 -0.322719 0.885232 0.247262 -0.906780

Q3 0.845926 1.073606 0.233991 -0.236160 0.147905

Q4 0.030459 1.391417 -0.346198 1.991587 -0.303235

--------------------------------------------------

Index(['Q1', 'Q2', 'Q3', 'Q4'], dtype='object')

Index(['A', 'B', &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值