Pandas入门——Series和DataFrame的创建、索引、基本操作

Pandas

Pandas基于Numpy构建,是数据分析的核心模块,可直接读取数据进行处理,兼容各种数据库,支持各种分析算法。因为之前了解到Python安装Pandas很慢,所以直接下载了Anaconda,感觉自己很机智哈哈哈!
因为各种镜像源都挂了,下载真的好慢,所以分享一个Anaconda3-5.1.0-Windows-x86_64网盘链接:https://pan.baidu.com/s/1Pj6Kmk6Tur3iMXLxxcRGJA
Series和DataFrame是Pandas中最主要的两种数据结构,个人抽象理解为带索引的一维数组和带索引的表格。

Series

Series类似一维数组,由带索引index的一组values构成,values可以是任何数据类型。可以将Series理解为带索引的ndarray,也可以将Series理解为有顺序的dict字典。
s.index可以查看索引,是pandas中所有对象都具有的属性,返回索引的生成器
s.values可以查看值,返回numpy.ndarray,默认数据类型是float64
name是数据表名称属性,可以看作数据表的表名

import numpy as np
import pandas as pd
ar=np.random.rand(10)
s=pd.Series(ar,name='Series s')
print(ar,type(ar))
print(s,type(s))
print('------------')
print(s.index)# index可以看做标签的生成器,所有pandas中的数据结构都有index
print(list(s.index),type(s.index))
print(s.values,type(s.values))#values实际上是numpy.ndarray
生成Series
  • 公式
    pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
    index默认从0编号,可以自定义list,index可以不唯一,但尽量唯一
    dtype与data的数据类型相同,一般默认float64

  • 创建
    Series可以通过字典、一维数组、标量来创建。
    字典创建时,字典的key是Series的index,字典的values是Series的values。
    一维数组创建时,自定义index必须和values长度相同。
    标量创建时,index长度是values长度。

#用字典创建
dic={
   'a':1,'b':2,'c':3}
s=pd.Series(dic)
print(s)
#用一维数组创建
ar=np.random.rand(5)*100
s=pd.Series(ar,index=list('abcde'))
print(s)
#标量创建
s=pd.Series(100,index=range(4))
print(s)
Series索引

和ndarray,list类似,可以使用位置下标、标签、切片、bool索引。
需要注意多个标签需要用s[[‘a’,‘b’]],索引顺序不一定要按照index顺序

# 位置下标
s=pd.Series(np.random.rand(5)*10,index=list('abcde'))
print(s)
print(s[0])#位置下标从0开始
print(s[3],type(s[3]),s[3].dtype)
# 不能被逆序排列print(s[-1])

#标签索引
print(s['a'])
print(s[['c','a']])#多个标签需要用[[]]表示列表,索引顺序不一定要按照series的顺序

#切片
print(s[1:3])#位置索引左闭右开,不含右侧边际
print(s['b':'d'])#index索引闭区间
print(s[:2])

#添加空值
# (None代表空值,NaN代表有问题的数值,两个都会识别为空值)
print('---------')
s['a']=None
print(s)
s[2]=np.nan
print(s)
#.isnull() 空值为Ture/ .notnull()非空为True 
print(s.isnull())
print(s.notnull())

#bool型
print(s>3)
print(s[s>1])
print(s[s.isnull()])
print(s[s.notnull()])
Series基本操作
  • 查看数据头尾
    s.head() 查看数据头,默认查看5行,可赋值
    s.tail(3) 查看数据尾,默认查看5行,可赋值
  • 依据索引排序 s.reindex()
    保留已有索引及对应value,增加不存在索引及对应values为空值NaN
# reindex 依据索引重新排序,而非重命名索引index,也增加index数目
s=pd.Series(np.random.rand(5))
print(s)
s1=s.reindex([0,2,1,'a','b'])#保留数据已有索引,不存在索引返回空值NaN
print(s1)
s2=s.reindex([0,2,1,'a','b','c'],fill_value=1)#保留数据已有索引,不存在索引返回fill_value
print(s2)

#将series作为参数调用Series无法改变原有对象索引
s3=pd.Series(s,index=list('abcde'))
print(s3)

#改变原有对象的索引
s.index=['a','b','c','d','e']
print(s)
'''
0    0.996371
1    0.274122
2    0.688167
3    0.813712
4    0.780905
dtype: float64
0    0.996371
2    0.688167
1    0.274122
a         NaN
b         NaN
dtype: float64
0    0.996371
2    0.688167
1    0.274122
a    1.000000
b    1.000000
c    1.000000
dtype: float64
a   NaN
b   NaN
c   NaN
d   NaN
e   NaN
dtype: float64
a    0.996371
b    0.274122
c    0.688167
d 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值