数据处理--pandas(上)


提示:以下是本篇文章正文内容,下面案例可供参考

一、Pandas是什么?

pandas是Python在数据处理方面功能最为强大的扩展模块了。在在Python中,pandas包含了高级的数据结构Series和DataFrame,使得在Python中处理数据变得非常方便、快速和简单。

二、Pandas使用方法

1.引入库

import numpy as np
import pandas as pd

pandas主要的两个数据结构是Series和DataFrame,我们先导入它们以及相关模块:

import numpy as np
from pandas import Series, DataFrame

2.Series对象

2.1 创建对象

2.1.1 使用数组创建对象

Series可以简单地被认为是一维的数组。Series和一维数组最主要的区别在于Series类型具有索引(index),可以和另一个编程中常见的数据结构哈希(Hash)联系起来。

a = np.arange(10)
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
s = Series(a)

#0    0
#1    1
#2    2
#3    3
#4    4
#5    5
#6    6
#7    7
#8    8
#9    9
#dtype: int32

可以在创建Series时添加index,并可使用Series.index查看具体的index。需要注意的一点是。当从数组创建Series时若指定index,那么index长度要和data的长度一样,否则会报错

s = Series(a[:5], index=['a', 'b', 'c', 'd', 'e'])
# a    0
# b    1
# c    2
# d    3
# e    4
# dtype: int32
2.1.2 使用字典创建对象

Series还可以从字典(dict)创建:

d = {'a': 0., 'b': 1, 'c': 2}
s = Series(d)
#a    0.0
#b    1.0
#c    2.0
#dtype: float64

使用字典创建Series时指定index的情形(index长度不必和字典相同)

s=Series(d,index=['a','b','c','d','e'])
a    0.0
b    1.0
c    2.0
d    NaN
e    NaN
dtype: float64

一是字典创建的Series,数据将按index的顺序重新排列;二是index长度可以和字典长度不一致。如果多了的话,pandas将自动为多余的index分配NaN;少了的话,自动截取字典

2.2 Series数据的访问

访问Series数据可以和数组一样使用下标,也可以像字典一样使用索引,还可以使用一些条件过滤。

s[0] # 0.0 
s[:2] # 获取下标从0到2的元素
# 结果为
#a    0.0
#b    1.0
#dtype: float64

# s[['b', 'a']] # 获取index为a和b的元素
s[[1,0]] # 获取下标从1和0的元素
# 结果为
#b    1.0
#a    0.0
#dtype: float64
s[s > 0.5] #查看大于0.5元素的值
#b    1.0
#c    2.0
#dtype: float64

3.DataFrame对象

DataFrame是将数个Series按列合并而成的二维数据结构,每一列单独取出来是一个Series

3.1 创建DataFrame对象

d = {'one': Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = DataFrame(d)

结果为:


    one	two
a	1.0	1.0
b	2.0	2.0
c	3.0	3.0
d	NaN	4.0

可以使用dataframe.index和dataframe.columns来查看DataFrame的行和列,dataframe.values则以数组的形式返回DataFrame的元素:

df.index #Index(['a', 'b', 'c', 'd'], dtype='object')
df.columns #Index(['one', 'two'], dtype='object')
df.values 
#array([[ 1.,  1.],
#       [ 2.,  2.],
#       [ 3.,  3.],
#       [nan,  4.]])

DataFrame也可以从值是数组的字典创建,但是各个数组的长度需要相同

d = {'one': [1., 2., 3., 4.], 'two': [4., 3., 2., 1.]}
df = DataFrame(d, index=['a', 'b', 'c', 'd'])
    one	two
a	1.0	4.0
b	2.0	3.0
c	3.0	2.0
d	4.0	1.0

值非数组时,没有这一限制,并且缺失值补成NaN

d= [{'a': 1.6, 'b': 2}, {'a': 3, 'b': 6, 'c': 9}]
df = DataFrame(d)
     a	b	c
0	1.6	2	NaN
1	3.0	6	9.0

在实际处理数据时,有时需要创建一个空的DataFrame

df = DataFrame()

3.2 使用concat函数基于Serie或者DataFrame创建一个DataFrame

a = Series(range(5))
b = Series(np.linspace(4, 20, 5))
df = pd.concat([a, b], axis=1)

    0	1
0	0	4.0
1	1	8.0
2	2	12.0
3	3	16.0
4	4	20.0

3.3 DataFrame数据的访问

通过[ index ]来获取数据

df[1]# 选取第2列的元素Series对象
0     4.0
1     8.0
2    12.0
3    16.0
4    20.0
Name: 1, dtype: float64

通过df.iloc选取行的数据

df.iloc[1]# 选取第一行
0    1.0
1    8.0
Name: 1, dtype: float64

选取行还可以使用切片的方式或者是布尔类型的向量:

df[1:3] 

    0	1
1	1	8.0
2	2	12.0

Pandas快速进阶还在更新中。

总结

本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Anonymous&

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

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

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

打赏作者

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

抵扣说明:

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

余额充值