python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]

文章目录

  • 概括:Numpy+Scipy+pandas+matplotlib
  • pandas——数据分析
    • 一.pandas安装
        • 1.使用Anaconda界面安装
        • 2.使用Anaconda命令安装
        • 3. 使用PyPi安装命令安装
    • 二. pandas引入约定
    • 三. pandas基本数据结构
      • 1.Series
        • 1.通过一维数组创建
        • 2.通过字典的方式创建
        • 3.Series值的获取方式
            • 1.方括号+索引
            • 2.方括号+下标值
            • 3.Series获取多个值
        • 4.Series的运算
        • 5.Series缺失值检测
        • 6.Series自动对齐
        • 7.Series及其索引的name属性
      • 2.DataFrame
        • 1.通过二维数组创建
        • 2.通过字典的方式创建
        • 3.索引对象
        • 4.DataFrame数据获取

概括:Numpy+Scipy+pandas+matplotlib

在这里插入图片描述

pandas——数据分析

基于numPy 的一种工具,为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

一.pandas安装

Python的Anaconda发行版,已经安装好pandas库,不需要另外安装

1.使用Anaconda界面安装

选择对应的pandas进行勾选安装即可

2.使用Anaconda命令安装

conda install pandas

3. 使用PyPi安装命令安装

pip install pandas

二. pandas引入约定

 from pandas import Series, DataFrame
 import pandas as pd

三. pandas基本数据结构

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

1.Series

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

1.通过一维数组创建

jupyter notebook运行代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd
arr=np.array([1,3,5,np.NaN,10])
series01=Series(arr)
series01
series01.dtype
series01.index
series01.values

结果:

0     1.0   #通过数组创建Series的时候,如果没有指定索引值,则自动创建0-N的整数索引
1     3.0   #当Series对象创建好后可以通过index修改索引值
2     5.0
3     NaN
4    10.0
dtype: float64
dtype('float64')
RangeIndex(start=0, stop=5, step=1)
array([ 1.,  3.,  5., nan, 10.])

python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第1张图片
代码:

series02=Series([10,20,30])
series02

series03.index=[u'语文',u'数学',u'英语']
series03

series04=Series(data=[10,20,30],dtype=np.float64,index=[u'语文',u'数学',u'英语'])
series04

结果:

0    10
1    20
2    30
dtype: int64

语文    10.0
数学    20.0
英语    30.0
dtype: float64

语文    10.0
数学    20.0
英语    30.0
dtype: float64

2.通过字典的方式创建

代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd
dict1={'王大锤':100,'牛子':60,'李铁钢':90}
#字典中的key成为Series中的索引值,value成为Series中的values
series05=Series(dict1)
print(series05)
print('index:',series05.index)
print('values',series05.values)
print('dtype',series05.dtype)

结果:

王大锤    100
牛子      60
李铁钢     90
dtype: int64
index: Index(['王大锤', '牛子', '李铁钢'], dtype='object')
values [100  60  90]
dtype int64

3.Series值的获取方式

1.方括号+索引

读取对应索引的数据,有可能返回多条数据
代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd
series06=Series(data=[10,20,30],dtype=np.float64,index=[u'语文',u'数学',u'英语'])
print(series06)
print()
print(u"series['语文']",series06[u'语文'])#方括号+索引获取值  

结果:

语文    10.0
数学    20.0
英语    30.0
dtype: float64

series['语文'] 10.0
2.方括号+下标值
  • 读取对应下标值的数据,下标值的取值范围为:[0,len(Series.values))
  • 另外下标值也可以是负数,表示从右往左获取数据
    代码:
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
series06=Series(data=[10,20,30],dtype=np.float64,index=[u'语文',u'数学',u'英语'])
print(series06)
print()
print("series[0]=",series06[0])#方括号+下标值获取值
print("series[-1]=",series06[-1])

结果:

语文    10.0
数学    20.0
英语    30.0
dtype: float64

series[0]= 10.0
series[-1]= 30.0
3.Series获取多个值

类似NumPy中的ndarray的切片操作,通过方括号+下标值/索引值+冒号(:)的形式来截取series对象中的一部分数据。
Series的运算
代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd
series06=Series(data=[10,20,30],dtype=np.float64,index=[u'语文',u'数学',u'英语'])
print(series06)
print()
print(series06[1:])#切片获取多个值
print()
print(series06[u'语文':u'数学'])     

结果:

语文    10.0
数学    20.0
英语    30.0
dtype: float64

数学    20.0
英语    30.0
dtype: float64

语文    10.0
数学    20.0
dtype: float64

4.Series的运算

  • NumPy中的数组运算,在Series中都保留了,均可以使用,并且Series进行数组运算的时候,索引与值之间的映射关系不会发生改变
  • 注意:其实在操作Series的时候,基本上可以把Series看成NumPy中的ndarray数组来进行操作。ndarray数组的绝大多数操作都可以应用到Series上
    python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第2张图片

python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第3张图片

5.Series缺失值检测

pandas中的isnull和notnull两个函数可以用于在Series中检测缺失值,这两个函数的返回时一个布尔类型的Series

代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd

scores=Series({"Tom":100,"Bob":90,"Peter":80})
print(scores)
print()

print(pd.isnull(scores))
print()

print(pd.notnull(scores))
print()

print(scores[pd.isnull(scores)])#过滤出为缺失值的项
print()

print(scores[pd.notnull(scores)])#过滤出不是缺失值的项
print()

结果:

Tom      100
Bob       90
Peter     80
dtype: int64

Tom      False
Bob      False
Peter    False
dtype: bool

Tom      True
Bob      True
Peter    True
dtype: bool

Series([], dtype: int64)

Tom      100
Bob       90
Peter     80
dtype: int64

代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd

scores=Series({"Tom":100,"Bob":90,"Peter":80})
print(scores)
print()
new_index=["Tom","Bob","Jone","Peter"]
scores=Series(scores,index=new_index)
print(scores)

结果:(NaN表示一个缺失值或者NA值)

Tom      100
Bob       90
Peter     80
dtype: int64

Tom      100.0
Bob       90.0
Jone       NaN
Peter     80.0
dtype: float64

6.Series自动对齐

当多个series对象之间进行运算的时候,如果不同series之间具有不同的索引值,那么运算会自动对齐不同索引值的数据,如果某个series没有某个索引值,那么最终结果会赋值为NaN

代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd

s1=Series([12,23,45],index=['p1','p2','p3'])
s2=Series([23,42,13],index=['p3','p4','p6'])
print("=====s1+s2=====")
print(s1+s2)
print()
print("=====s1*s2=====")
print(s1*s2)
print()
print("=====s1/s2=====")
print(s1/s2)

结果:

=====s1+s2=====
p1     NaN
p2     NaN
p3    68.0
p4     NaN
p6     NaN
dtype: float64

=====s1*s2=====
p1       NaN
p2       NaN
p3    1035.0
p4       NaN
p6       NaN
dtype: float64

=====s1/s2=====
p1         NaN
p2         NaN
p3    1.956522
p4         NaN
p6         NaN
dtype: float64

7.Series及其索引的name属性

Series对象本身以及索引都具有一个name属性,默认为空,根据需要可以进行赋值操作
代码:

import numpy as np
from pandas import Series, DataFrame
import pandas as pd

scores=Series({"Tom":100,"Bob":90,"Peter":80})
scores.name=u'数学' #取名字,Name: 数学
scores.index.name=u'期末考试成绩'#标题
print(scores)

结果:

期末考试成绩
Tom      100
Bob       90
Peter     80
Name: 数学, dtype: int64

2.DataFrame

1.通过二维数组创建

python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第4张图片
python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第5张图片
python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第6张图片

2.通过字典的方式创建

python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第7张图片
python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第8张图片
python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第9张图片

3.索引对象

  • 不管是Series还是DataFrame对象,都有索引对象。
  • 索引对象负责管理轴标签和其它元数据(eg:轴名称等等)
  • 通过索引可以从Series、DataFrame中获取值或者对某个索引值进行重新赋值
  • Series或者DataFrame的自动对齐功能是通过索引实现的

4.DataFrame数据获取

可以直接通过列索引获取指定列的数据, eg: df[column_name]
如果需要获取指定行的数据的话,需要通过ix方法来获取对应行索引的行数据,eg: df.ix[index_name]
python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第10张图片
python自学篇十六[pandas——数据分析 (一):pandas安装+Series+DataFrame]_第11张图片

你可能感兴趣的:(python基础)