目录

Series基础

创建Series

通过索引获取数据

指定Series的索引值

根据索引值读取数据

使用key/value对象(类似字典)来创建Seires

DataFrame基础

使用列表创建DataFrame

使用ndarrays创建DataFrame

使用字典创建DataFrame

根据列索引提取数据列

添加数据列

对原有数据列进行运算获得新数据列

根据列索引删除数据列

使用del删除指定数据列

使用pop方法删除数据列

使用loc和iloc函数对行索引进行操作

使用loc和iloc获取DataFrame的某一行

使用loc和iloc获取DataFrame的某一列

利用loc,iloc提取指定行、指定列数据

利用loc,iolc提取所有数据

利用loc函数提取特定行

利用切片选取特定行

利用append函数添加数据行

利用drop函数删除数据行


Series基础

Series 是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。

Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。Series 由索引(index)和列组成,函数语法如下:

pandas.Series( data, index, dtype, name, copy)

data:一组数据

index:数据索引标签(行索引),默认从0开始

dtype:数据类型,默认会自己判断

name:Series的名称

copy:拷贝数据,默认为False(不常用)

创建Series

import pandas as pddata = ['a','b','c']
my_series = pd.Series(data)
my_series

输出:

0    a
1    b
2    c
dtype: object

通过索引获取数据

my_series[0]

输出:

'a'

指定Series的索引值

import pandas as pddata  = ['a','b','c']
index = ['first','second','thirdly']
my_series = pd.Series(data,index=index)
my_series

输出:

first      a
second     b
thirdly    c
dtype: object

object为数据类型

根据索引值读取数据

import pandas as pddata  = ['a','b','c']
index = ['first','second','thirdly']
my_series = pd.Series(data,index=index)
my_series['first']

输出:

'a'

使用key/value对象(类似字典)来创建Seires

import pandas as pddata = {1:'Google',2:'Runoob',3:'Wiki'}
myvar = pd.Series(data)
myvar

输出:

1    Google
2    Runoob
3      Wiki
dtype: object

按照这种方法将数据转换成Series时,key转换为每列的索引,value转换成每列的值

按照字典创建Series时,可以只将需要的数据转换成Series

import pandas as pddata = {1:'Google',2:'Runoob',3:'Wiki'}
myvar = pd.Series(data,index=[2,3])
myvar

输出:

2    Runoob
3      Wiki
dtype: object

可以看到只将索引为2,3的数据转换成了Series

DataFrame基础

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。 DataFrame 既有行索引(index)也有列索引(columns),它可以被看做由 Series 组成的字典(共同用一个索引)。

Record为DataFrame的记录,即一行

DataFrame可以由Series合成,而DataFrame的每一列都为Series

创建DataFrame的函数语法如下:

pandas.DataFrame(data,index,columns,dtype,copy)

data:一组数据(ndarray、series、map、lists、dict 等类型)

index:索引值,或者可以称为行标签

columns:列标签,默认为 RangeIndex (0, 1, 2, …, n)

dtype:数据类型,默认会自己判断

copy:拷贝数据,默认为 False(不常用)

使用列表创建DataFrame

import pandas as pddata = [['Goole',10],['Runoob',12],['Wiki',13]]
df = pd.DataFrame(data,columns=['Site','Age'])
df

输出:

data列表中的一个列表元素为一行,columns为每一列的列名

使用dtype参数修改数据类型

import pandas as pddata = [['Goole',10],['Runoob',12],['Wiki',13]]
df = pd.DataFrame(data,columns=['Site','Age'],dtype=float)
df

输出:

可以看到Age列的数据类型变为了float

使用ndarrays创建DataFrame

ndarray为n维数组

import pandas as pddata = {'Site':['Google','Runoob','Wiki'],'Age':[10,12,13]}
df = pd.DataFrame(data)
df

输出:

可以把data作为一个字典嵌套列表,字典中的key为转换为列名,value列表转换为一列中的数据

使用字典创建DataFrame

import pandas as pddata = [{'a':1,'b':2},{'a':5,'b':10,'c':20}]
df = pd.DataFrame(data)
df

输出:

data为列表嵌套字典,一个字典代表一行数据,字典中的key为列名,value为该列的值

由于data中第一个字典中缺少c键及其对应的值,故在生成的DataFrame中第0行的c列数据为NaN,Not a Number,非数

data中的数据没有float类型的,但是在生成的DataFrame中,第1行的c列数据为20.0,数据类型为float,这是因为NaN在Python中为float类型的,而dtype参数自动检测,将每一列的数据都转换为同一数据类型,所以c列的数据都被转换为了float类型

根据列索引提取数据列

首先创建一个DataFrame

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

输出:

注意由于第一列的最后一行为NaN,导致该列数据类型全为float

选取two列

df['two']

输出:

a    1
b    2
c    3
d    4
Name: two, dtype: int64

类型为Series

添加数据列

df['three'] = pd.Series([10,20,30],index=['a','b','c'])
df

输出:

对原有数据列进行运算获得新数据列

df['four'] = df['one'] + df['three']
df

输出:

可见,four列中每一行的值都为one列和three列对应行的值的加和

根据列索引删除数据列

import pandas as pddata = [{'a':1,'b':2},{'a':5,'b':10,'c':20}]
df = pd.DataFrame(data)
df

原始数据框:

使用del删除指定数据列

del df['one']

删除后数据框为:

从输出结果可以看出,one列已被删除

使用pop方法删除数据列

语法为:DataFrame.pop(列名)

s = df.pop('one')

输出:

该结果与使用del方法得到的结果一模一样

pop方法与del最大的茶杯是,使用pop方法删除数据列时,pop会将删除的数据列返回,类型为Series

将s输出:

a    1.0
b    2.0
c    3.0
d    NaN
Name: one, dtype: float64

使用loc和iloc函数对行索引进行操作

loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行)

iloc函数:通过行号来取行数据(如取第二行的数据)

首先创建一个DataFrame

import numpy as np
import pandas as pddf = pd.DataFrame(np.arange(16).reshape(4,4),\index=list('abcd'),columns=list('ABCD'))
df

输出:

首先使用numpy生成元素为0~15的一维数组

np.arange(16)

输出:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])

接着使用reshape属性将该一维数组转换为4×4的多维数组

np.arange(16).reshape(4,4)

输出:

array([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11],[12, 13, 14, 15]])

最后将该多维数组作为数据转换为DataFrame

使用loc和iloc获取DataFrame的某一行

获取DataFrame的第一行数据

df.loc['b']
df.iloc[1]

两种方法都获取到了同样的结果:

A    4
B    5
C    6
D    7
Name: b, dtype: int32

该例中,loc与iloc区别就在于loc通过行索引来获取数据,iloc通过行号来获取数据

使用loc和iloc获取DataFrame的某一列

获取DataFrame的第一列数据

df.loc[:,['A']]
df.iloc[:,[0]]

两种方法都获取到了同样的结果:

在这里使用了切片 : [行开始:行结束:步长,列开始:列结束:步长]

逗号前面时行选择,逗号后面时列选择

loc使用切片时,除了步长,行开始、列开始...都必须为index/columns

iloc使用切片时,除了步长,行开始、列开始...都必须为行号,列号

df.loc['a':'d':2,['A']]

输出:

df.loc[['a'],'A':'D':2]

输出:

当行或列选择中有一个仅为一个index/columns而且不是列表数据时,输出Series

df.loc['a':'d':2,'A']

输出:

a    0
c    8
Name: A, dtype: int32
df.loc['a','A':'D':2]

输出:

A    0
C    2
Name: a, dtype: int32

当行选择和列选择都为一个index/columns时,定位到DataFrame中的一个数据

df.loc['a','A']

输出:

0

使用iloc函数时,情况与loc类似,只是将行选择和列选择中的index/columns改为了行号和列号

df.iloc[0:3:2,[0]]

输出:

df.iloc[[0],0:3:2]

输出:

df.iloc[0:3:2,0]

输出:

a    0
c    8
Name: A, dtype: int32
df.iloc[0,0:3:2]

输出:

A    0
C    2
Name: a, dtype: int32
df.iloc[0,0]

输出:

0

另外还有两种方法获取DataFrame中的指定列

df.A
df['A']

两者输出数据的类型均为Serise

a     0
b     4
c     8
d    12
Name: A, dtype: int32

要想输出的数据为DataFrame类型,要用双中括号

df[['A']]

df[['A','B']]

利用loc,iloc提取指定行、指定列数据

提取index为'a','b',列为'A','B'的数据

df.loc[['a','b'],['A','B']]

逗号前的中括号为index,逗号后的中括号为'A','B'

提取行号为0,1,列号为0,1的数据

df.iloc[[0,1],[0,1]]

逗号前的中括号为行号,逗号后的中括号为列号

两者均输出:

利用loc,iolc提取所有数据

df.loc[::]
df.iloc[::]

两者均输出:

利用loc函数提取特定行

提取A列中数据为0的行

df.loc[df['A']==0]

输出:

结果数据类型为DataFrame

使用loc函数时,可以指定index,将指定的index数据行提取出来

优点是:如果index是人名,数据框为所有人的数据,那么我可以将某个人的多条数据提取出来分析

缺点是:如果index不具有特定意义,而且重复,那么提取的数据需要进一步处理

利用切片选取特定行

选取第2,3行(行数从0开始)的数据

df[2:4]

输出:

切片经典左闭右开,结果数据类型为DataFrame

注意,使用切片时,只允许行切片,不允许列切片

如果将切片像loc,iloc函数一样操作,就会报错,如:

df[2:4,0:2]

报错:

利用append函数添加数据行

创建两个数据框:

import pandas as pddf1 = pd.DataFrame([[1,2],[3,4]],columns=['a','b'])
df2 = pd.DataFrame([[5,6],[7,8]],columns=['a','b'])

使用append在df1行末尾追加新的数据行

df1 = df1.append(df2)
df1

输出:

注意到index仍为原来各自数据框的index

这里生成的新的数据框,index重复不具有特殊含义,如使用,还需进一步处理

利用drop函数删除数据行

df1 = df1.drop(0)
df1

drop函数中的参数指定删除所有index为该参数的数据行

输出:

由于df1中有两个数据行的index都为0,故删除了两条数据行

[pandas基础]Pandas Series和Pandas DataFrame基础操作相关推荐

  1. Python中的Pandas(1.pandas概述和Series的概述和相关操作)

    Pandas :  (Python Data Analysis Library 即 Python数据分析库),是基于Numpy的一种工具,该工具是为了解决数据分                    ...

  2. Python Pandas 的使用——Series

    Python Pandas 的使用--Series Pandas是一个强大的分析结构化数据的工具集:它的使用基础是Numpy(提供高性能的矩阵运算):用于数据挖掘和数据分析,同时也提供数据清洗功能. ...

  3. Pandas库(1):DataFrame类

    Pandas库围绕Series类型和DataFrame类型这两种数据结构,提供了一种高效便捷的数据处理方式. 一.DataFrame类概述 1.Series是pandas库的一维数据类型,DateFr ...

  4. dataframe python格式_python3.6 pandas,Series和DataFrame基础格式与用法,附代码实例

    pandas 是基于numpy构建的库,加上numpy,主要用于科学运算和数据处理. 也是一个让我忘记昂贵的MATLAB,并且不得不复习SQL的库.. 一般引入规定: In [105]: from p ...

  5. pandas基础(part1)--Series

    学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 pandas介绍 Series 创建Series 访问Series中的数据 pandas日期处理 DateTimeIndex pand ...

  6. Pandas简明教程:七、Pandas缺失数据的处理(数据清洗基础)

    文章目录 1.缺失数据的类型 2.定位缺失数据 3.修改定位数据 4.批量修改缺失数据 5.数据修复的利器--插值法(`interpolate`) 本系列教程教程完整目录: 数据清洗的内容其实很丰富, ...

  7. pandas教程:series和dataframe

    起步 pandas是一种Python数据分析的利器,是一个开源的数据分析包,最初是应用于金融数据分析工具而开发出来的,因此pandas为时间序列分析提供了很好的支持.pandas是PyData项目的一 ...

  8. [转载] pandas入门:Series、DataFrame、Index基本操作都有了!

    参考链接: 带有Pandas的Python:带有示例的DataFrame教程 导读:pandas是一款开放源码的BSD许可的Python库.它基于NumPy创建,为Python编程语言提供了高性能的. ...

  9. Pandas简明教程(一):Series数据类型、DataFrame数据类型

    一.Pandas概述 1.1 简介 Pandas是Python生态中非常重要的数据分析包,它是一个开源的库,采用BSD开源协议. Pandas是基于NumPy构建的数据分析包,但它含有比ndarray ...

最新文章

  1. 游戏 AI 相关文章
  2. 在.net中运用HTMLParser解析网页的原理和方法
  3. Servlet线程安全2
  4. nacos 公共_Springboot,Nacos并向使用研究
  5. [机器学习笔记] Note3--多变量线性回归
  6. bcc挖矿用什么_IPFS挖矿与传统传统挖矿的区别
  7. 查看设置本机共享文件 net share
  8. Hbuilder如何创建并运行Vue项目
  9. 西安后宰门小学_【云端论坛】走向未来的墙中老校 ——后宰门小学“名校+”教育集团云论坛精彩绽放...
  10. 软件测试中的心理学效应
  11. Linux下安装JDK(rpm版)
  12. 知乎上神回复,看完神清气爽
  13. pycharm设置显示返回工具箭头菜单和显示哪个文件左侧目录树显示到哪个文件
  14. 【英语面试】七.计算机研究生面试自我介绍范文5篇(英文)
  15. android 和RxJava配合使用的两个图片压缩框架LuBan、Compressor
  16. 使用反应路由器V4以编程方式导航
  17. eNSP动态NAT实验记录
  18. 联合金投P9办公自动化解决方案[1]
  19. 虚拟机及Linux[CentOS7]下载、安装说明(全)
  20. 自然语言处理 文本预处理(下)(张量表示、文本数据分析、文本特征处理等)

热门文章

  1. 【SAP ABAP问题整理】程序运行超时,修改参数
  2. 配置secureCRT
  3. C4D快速入门教程——挤压
  4. OCA,OCP,OCM傻傻分不清?
  5. BUUCTF·[WUSTCTF2020]大数计算·WP
  6. GDPR(欧盟通用数据保护条例)基础知识
  7. 【Windows】清除指定文件类型的默认打开方式
  8. 返璞归真-删除文件默认打开方式
  9. 网络协议(十四):WebSocket、WebService、RESTful、IPv6、网络爬虫、HTTP缓存
  10. 百度云生态分享日 | AI技术实践与应用沙龙活动成功举办