导航:首页 > 编程语言 > pandas绘图python

pandas绘图python

发布时间:2022-12-15 13:29:27

‘壹’ 彩色折线散点图python怎么指定数据

一、导包

二、绘制简单折线

1、在利用pandas模块进行操作前,可以先引入这个模块,如下:

2、读取Excel文件的两种方式:

三、pandas操作Excel的行列

1、读取指定的单行,数据会存在列表里面

2、读取指定的多行,数据会存在嵌套的列表里面

3、读取指定的行列

4、读取指定的多行多列值

5、获取所有行的指定列

6、获取行号并打印输出

7、获取列名并打印输出

8、获取指定行数的值

四、pandas处理Excel数据成为字典

五、绘制简单折线图

六、绘制简单散点图

使用scatter绘制散点图并设置其样式

1、绘制单个点,使用函数scatter,并向它传递x,y坐标,并可使用参数s指定点的大小

2、绘制一系列点,向scatter传递两个分别包含x值和y值的列表

3、设置坐标轴的取值范围:函数axis()要求提供四个值,x,y坐标轴的最大值和最小值

4、使用参数edgecolor在函数scatter中设置数据点的轮廓

5、向scatter传递参数c,指定要使用的颜色

6、使用颜色映射

7、自动保存图表:使用函数plt.savefig()

8、设置绘图窗口尺寸

9、实例程序

‘贰’ Python数据分析: 初识Pandas,理解Pandas实现和原理

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

01 重要的前言

这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一头扎进《利用Python进行数据分析》这本经典之中,硬着头皮啃完之后,好像自己什么都会了一点,然而实际操作起来既不知从何操起,又漏洞百出。

至于原因嘛,理解不够,实践不够是两条老牌的拦路虎,只能靠自己来克服。还有一个非常有意思且经常被忽视的因素——陷入举三反一的懵逼状态。

什么意思呢?假如我是个旱鸭子,想去学游泳,教练很认真的给我剖析了蛙泳的动作,扶着我的腰让我在水里划拉了5分钟,接着马上给我讲解了蝶泳,又是划拉了5分钟,然后又硬塞给我潜泳的姿势,依然是划拉5分钟。最后,教练一下子把我丢进踩不到底的泳池,给我呐喊助威。

作为一个还没入门的旱鸭子,教练倾囊授了我3种游泳技巧,让我分别实践了5分钟。这样做的结果就是我哪一种游泳技巧也没学会,只学会了喝水。当一个初学者一开始就陷入针对单个问题的多种解决方法,而每一种方法的实践又浅尝辄止,在面对具体问题时往往会手忙脚乱。

拿Pandas来说,它的多种构造方式,多种索引方式以及类似效果的多种实现方法,很容易把初学者打入举三反一的懵逼状态。所以,尽量避开这个坑也是我写Pandas基础系列的初衷,希望通过梳理和精简知识点的方式,给需要的同学一些启发。目前暂定整个基础系列分为4篇,基础篇过后便是有趣的实战篇。

下面开始进入正题(我真是太唠叨了)。

02 Pandas简介

江湖上流传着这么一句话——分析不识潘大师(PANDAS),纵是老手也枉然。

Pandas是基于Numpy的专业数据分析工具,可以灵活高效的处理各种数据集,也是我们后期分析案例的神器。它提供了两种类型的数据结构,分别是DataFrame和Series,我们可以简单粗暴的把DataFrame理解为Excel里面的一张表,而Series就是表中的某一列,后面学习和用到的所有Pandas骚操作,都是基于这些表和列进行的操作(关于Pandas和Excel的形象关系,这里推荐我的好朋友张俊红写的《对比EXCEL,轻松学习Python数据分析》)。

这里有一点需要强调,Pandas和Excel、SQL相比,只是调用和处理数据的方式变了,核心都是对源数据进行一系列的处理,在正式处理之前,更重要的是谋定而后动,明确分析的意义,理清分析思路之后再处理和分析数据,往往事半功倍。

03 创建、读取和存储

1、创建

在Pandas中我们想要构造下面这一张表应该如何操作呢?

别忘了,第一步一定是先导入我们的库——import pandas as pd

构造DataFrame最常用的方式是字典+列表,语句很简单,先是字典外括,然后依次打出每一列标题及其对应的列值(此处一定要用列表),这里列的顺序并不重要:

左边是jupyter notebook中dataframe的样子,如果对应到excel中,他就是右边表格的样子,通过改变columns,index和values的值来控制数据。

PS,如果我们在创建时不指定index,系统会自动生成从0开始的索引。

2、 读取

更多时候,我们是把相关文件数据直接读进PANDAS中进行操作,这里介绍两种非常接近的读取方式,一种是CSV格式的文件,一种是EXCEL格式(.xlsx和xls后缀)的文件。

读取csv文件:

engine是使用的分析引擎,读取csv文件一般指定python避免中文和编码造成的报错。而读取Excel文件,则是一样的味道:

非常easy,其实read_csv和read_excel还有一些参数,比如header、sep、names等,大家可以做额外了解。实践中数据源的格式一般都是比较规整的,更多情况是直接读取。

3、存储

存储起来一样非常简单粗暴且相似:

04 快速认识数据

这里以我们的案例数据为例,迅速熟悉查看N行,数据格式概览以及基础统计数据。

1、查看数据,掐头看尾

很多时候我们想要对数据内容做一个总览,用df.head()函数直接可以查看默认的前5行,与之对应,df.tail()就可以查看数据尾部的5行数据,这两个参数内可以传入一个数值来控制查看的行数,例如df.head(10)表示查看前10行数据。

2、 格式查看

df.info()帮助我们一步摸清各列数据的类型,以及缺失情况:

从上面直接可以知道数据集的行列数,数据集的大小,每一列的数据类型,以及有多少条非空数据。

3、统计信息概览

快速计算数值型数据的关键统计指标,像平均数、中位数、标准差等等。

我们本来有5列数据,为什么返回结果只有两列?那是因为这个操作只针对数值型的列。其中count是统计每一列的有多少个非空数值,mean、std、min、max对应的分别是该列的均值、标准差、最小值和最大值,25%、50%、75%对应的则是分位数。

05 列的基本处理方式

这里,我们采用SQL四大法宝的逻辑来简单梳理针对列的基本处理方式——增、删、选、改。

温馨提示:使用Pandas时,尽量避免用行或者EXCEL操作单元格的思维来处理数据,要逐渐养成一种列向思维,每一列是同宗同源,处理起来是嗖嗖的快。

1、增

增加一列,用df[‘新列名’] = 新列值的形式,在原数据基础上赋值即可:

2、删:

我们用drop函数制定删除对应的列,axis = 1表示针对列的操作,inplace为True,则直接在源数据上进行修改,否则源数据会保持原样。

3、选:

想要选取某一列怎么办?df[‘列名’]即可:

选取多列呢?需要用列表来传递:df[[‘第一列’,‘第二列’,‘第三列’…]]

4、 改:

好事多磨,复杂的针对特定条件和行列的筛选、修改,放在后面结合案例细讲,这里只讲一下最简单的更改:df[‘旧列名’] = 某个值或者某列值,就完成了对原列数值的修改。

06 常用数据类型及操作

1、字符串

字符串类型是最常用的格式之一了,Pandas中字符串的操作和原生字符串操作几乎一毛一样,唯一不同的是需要在操作前加上".str"。

小Z温馨提示:我们最初用df2.info()查看数据类型时,非数值型的列都返回的是object格式,和str类型深层机制上的区别就不展开了,在常规实际应用中,我们可以先理解为object对应的就是str格式,int64对应的就是int格式,float64对应的就是float格式即可。

在案例数据中,我们发现来源明细那一列,可能是系统导出的历史遗留问题,每一个字符串前面都有一个“-”符号,又丑又无用,所以把他给拿掉:

一般来说清洗之后的列是要替换掉原来列的:

2、 数值型

数值型数据,常见的操作是计算,分为与单个值的运算,长度相等列的运算。

以案例数据为例,源数据访客数我们是知道的,现在想把所有渠道的访客都加上10000,怎么操作呢?

只需要选中访客数所在列,然后加上10000即可,pandas自动将10000和每一行数值相加,针对单个值的其他运算(减乘除)也是如此。

列之间的运算语句也非常简洁。源数据是包含了访客数、转化率和客单价,而实际工作中我们对每个渠道贡献的销售额更感兴趣。(销售额 = 访客数 X 转化率 X 客单价)

对应操作语句:df[‘销售额’] = df[‘访客数’] * df[‘转化率’] * df[‘客单价’]

但为什么疯狂报错?

导致报错的原因,是数值型数据和非数值型数据相互计算导致的。PANDAS把带“%”符号的转化率识别成字符串类型,我们需要先拿掉百分号,再将这一列转化为浮点型数据:

要注意的是,这样操作,把9.98%变成了9.98,所以我们还需要让支付转化率除以100,来还原百分数的真实数值:

然后,再用三个指标相乘计算销售额:

3、时间类型

PANDAS中时间序列相关的水非常深,这里只对日常中最基础的时间格式进行讲解,对时间序列感兴趣的同学可以自行查阅相关资料,深入了解。

以案例数据为例,我们这些渠道数据,是在2019年8月2日提取的,后面可能涉及到其他日期的渠道数据,所以需要加一列时间予以区分,在EXCEL中常用的时间格式是’2019-8-3’或者’2019/8/3’,我们用PANDAS来实现一下:

在实际业务中,一些时候PANDAS会把文件中日期格式的字段读取为字符串格式,这里我们先把字符串’2019-8-3’赋值给新增的日期列,然后用to_datetime()函数将字符串类型转换成时间格式:

转换成时间格式(这里是datetime64)之后,我们可以用处理时间的思路高效处理这些数据,比如,我现在想知道提取数据这一天离年末还有多少天(‘2019-12-31’),直接做减法(该函数接受时间格式的字符串序列,也接受单个字符串):

‘叁’ Python其实很简单 第十九章 Pandas之Series与DataFrame

19.1安装Anaconda

Anaconda是Python的一个开源发行版本,它预装了丰富的第三方库,而且主要面向科学计算和数据分析,使用起来要比原版的Python更省时省力。

Anaconda官方下载网址为:https://www.continuum.io/downloads。下载和安装的方法很简单,若有问题可以在网上搜索相关内容学习解决。

安装Anaconda之后,就会发现在Anaconda目录下同时安装了Jupyter Notebook、Spyder等工具,我们接下来主要使用Spyder进行开发。关于Spyder的使用方法非常简单,大家也可以去网上搜索学习。

虽然Anaconda已经预装了很多常用的包,但有时我们也需要自己安装一些包。可以在开始菜单中选择“Anaconda Anaconda Prompt”命令,在命令行输入conda install ( 代表包名)即可安装,也可以输入pip install 。

19.2数据分析包Pandas

Pandas是Python的一个数据分析包,Anaconda安装时已经附带安装了Pandas包。

Pandas数据结构有三种:Series(一维数组)、DataFrame(二维数组)和Panel(三维数组),其中最常用的是前两种数据结构。

19.2.1 Series

Series(序列)用于存储一行或一列数据,以及与之相关的索引的集合。

语法格式如下:

Series([数据1,数据2,......], index=[索引1,索引2,......])

例:

from pandas import Series

s=Series(['张三','李四','王五'],index=[1,2,3])

print(s)

输出结果如下:

1 张三

2 李四

3 王五

dtype: object

上面建立序列时指定了索引,若不指定,则默认的索引值从0开始。如下:

s=Series(['张三','李四','王五'])

输出结果为:

0 张三

1 李四

2 王五

dtype: object

索引值也可以为字符串。如下:

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

print(s)

输出结果为:

A 张三

B 李四

C 王五

dtype: object

1、访问序列

(1)可以通过索引访问序列,如:

from pandas import Series

s=Series(['张三','李四','王五'])

print(s)

print(s[0])

print(s[1:])

运行结果如下:

0 张三

1 李四

2 王五

dtype: object #print(s)输出

张三 #print(s[0])输出

1 李四

2 王五

dtype: object #print(s[1:])输出

(2)通过值获取索引值

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

print(s.index[s.values=='李四'])

运行结果:

Index(['B'], dtype='object')

(3)判断值是否存在

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

f='李四' in s.values

print(f)

运行结果:

True

(4)定位获取

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

print(s[[0,2,1]])

运行结果:

A 张三

C 王五

B 李四

dtype: object

2、修改序列

(1)追加序列,如:

from pandas import Series

s=Series(['张三','李四','王五'],index=['A','B','C'])

s1=Series(['孙六'],index=['D'])

s=s.append(s1)

print(s)

运行结果:

A 张三

B 李四

C 王五

D 孙六

dtype: object

(2)修改序列的值

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s[1]='李飞'

print(s)

运行结果:

A 张三

B 李飞

C 王五

D 孙六

dtype: object

不知道索引,仅知道要修改的值,也可通过值查找到索引后,再修改序列的值。如:

s[s.index[s.values=='李四']]='李飞'

这样也可以将“李四”修改为“李飞。

(3)修改索引

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s.index=[0,1,2,3]

print(s)

运行结果:

0 张三

1 李四

2 王五

3 孙六

dtype: object

(4)删除元素

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s=s.drop('A')

print(s)

运行结果:

B 李四

C 王五

D 孙六

dtype: object

(5)重新排序

可以按照索引排序,使用sort_index(ascending=True)方法对index进行排序操作。

from pandas import Series

s=Series(['张三','李四','王五','孙六'],index=['A','B','C','D'])

s=s.sort_index(ascending=False) # ascending=False表示按降序排列

print(s)

运行结果:

D 孙六

C 王五

B 李四

A 张三

dtype: object

(6)重置索引

重置索引可以使用reindex()。如果index列表中的元素多于序列的值,可用fill_value=0这样的语句填充。

s=s.reindex(['D','C','B','A'])

如果index列表中的元素多于序列的值,可用fill_value=0这样的语句填充。

s=s.reindex(['D','C','B','A'], fill_value=0)


19.2.2 DataFrame

DataFrame(数据框架)用于存储多行和多列的数据集合。它是Series的容器,类似于Excel中二维表格。

定义一个DataFrame的语法格式如下:

df=DataFrame({列名1 : 序列1,列名2 : 序列2,.......列名n : 序列n}, index=序列 )

例如,有如下二维表:



姓名

性别

年龄



张三

18



李四

19



王五

17







保存到DataFrame中可以用如下方法:

from pandas import Series

from pandas import DataFrame

name=Series(['张三','李四','王五'])

sex=Series(['男','女','男'])

age=Series([18,19,17])

df=DataFrame({'姓名':name,'性别':sex,'年龄':age})

print(df)

运行结果:

姓名 性别 年龄

0 张三 男 18

1 李四 女 19

2 王五 男 17

从上例可以看出,虽然我们省缺了索引,但系统自动添加了从0开始的索引值。


19.3 DataFrame的基本操作

1、访问方式

(1)获取行

print(df[1:2]) # 获取第1行的值

输出结果:

姓名 性别 年龄

1 李四 女 19

print(df[1:3]) #获取第1行到第2行的值

输出结果:

姓名 性别 年龄

1 李四 女 19

2 王五 男 17

(2)获取列

print(df['姓名']) #获取“姓名”列的值

输出结果:

0 张三

1 李四

2 王五

Name: 姓名, dtype: object

另一种方法:

print(df[df.columns[0:1]]) #先按照索引号获取列名,再按照列名读取

输出结果和上面的方法完全一致。

还有一种情况,是获取唯一值,即将列内的重复值中多余的删除,仅留下互不相同的值。所用的到方法是unique()。

sex1=Series(df['性别'].unique())

print(sex1)

输出结果:

0 男

1 女

dtype: object

(3)获取指定位置的值

print(df.at[1,'姓名']) # 格式为变量名.at[行号,列名]

输出结果:

李四

(4)获取块的值

print(df.iloc[0:2,1:3]) # 格式为变量名.iloc[行号1:行号2, 列号1:列号2]

输出结果:

性别 年龄

0 男 18

1 女 19

print(df.iloc[:,1:2]) #获取“性别”列的值

运行结果:

性别

0 男

1 女

2 男

2、修改、删除、增加行和列

(1)修改列名

print(df.columns)

df.columns=['name','sex','age']

print(df.columns)

输出结果:

Index(['姓名', '性别', '年龄'], dtype='object')

Index(['name', 'sex', 'age'], dtype='object')

可见,列名已经由“姓名、性别、年龄”修改为“age、sex、age”了。但这种修改必须把全部列名都一一列举,不能有遗漏,否则就会出错。如:

df.columns=['name','sex']

此时会报错:ValueError: Length mismatch: Expected axis has 3 elements, new values have 2 elements。

(2)修改行索引

df.index=[1,2,3]

(3)删除行

df.drop(1,axis=0) # axis=0表示行轴,也可以省略

(4)删除列

df.drop(‘性别’,axis=1) # axis=0表示列轴

也可以使用另一种方法:

del df['性别']

(5)增加列

df['电话']=[�',�',�']

print(df)

运行结果:

姓名 性别 年龄 电话

0 张三 男 18 1111111

1 李四 女 19 2222222

2 王五 男 17 3333333

(6)增加行

df.loc[len(df)]=['孙六','男',ཐ']

(7)追加

from pandas import Series

from pandas import DataFrame

name=Series(['张三','李四','王五'])

sex=Series(['男','女','男'])

age=Series([18,19,17])

df=DataFrame({'姓名':name,'性别':sex,'年龄':age}) # 建立DataFrame,变量名为df

name1=Series(['孙六','候七'])

sex1=Series(['男','女'])

age1=Series([19,17])

df1=DataFrame({'姓名':name1,'性别':sex1,'年龄':age1})

# 建立DataFrame,变量名为df1

df=df.append(df1,ignore_index=True)

# 将对df1追加到df后面,参数ignore_index=True表示重新索引

print(df)

运行结果:

姓名 性别 年龄

0 张三 男 18

1 李四 女 19

2 王五 男 17

3 孙六 男 19

4 候七 女 17

‘肆’ pandas绘图不显示

可以显示啊,不能显示的图形是坐标超出范围了,你可以在PicDRAW上查看坐标!

把图片控件的AutoReDraw设为True可以显示 Form_Load()
中的图形,以及以后来窗体刷新时图形不丢失。

‘伍’ 如何使用Python绘制饼图

我们在运用Python制作各种图形的时候,经常需要绘制饼图。那么如何用Python绘制饼图呢?下面我给大家分享演示一下。

工具/材料

Pycharm

首先我们需要在Excel文件中准备好饼图的数据,如下图所示

接下来我们打开Pycharm,新建Python文件,导入Python的pandas库,利用pandas将Excel数据加载到缓存中,如下图所示

然后我们在导入pyplot库,运用pyplot库的pie进行饼图的绘制,如下图所示

接着运行程序以后我们就可以看到一张如下图所示的饼图了,但是四周的名称和Excel中的还是不太一样,接下来修改四周的名称

我们在运用pandas库加载Excel数据文件的时候加上index_col属性即可,如下图所示

这次在运行程序我们就可以看到饼图四周的名称和Excel中的一样了,如下图所示

接着我们在运用pyplot中的title和ylable设置饼图的标题和Y坐标轴的名称,如下图所示

最后运行文件就可以看到下面这个信息比较齐全的饼图了,如下图所示,到这里用Python绘制饼图就结束了

‘陆’ 用Python画图

今天开始琢磨用Python画图,没使用之前是一脸懵的,我使用的开发环境是Pycharm,这个输出的是一行行命令,这个图画在哪里呢?

搜索之后发现,它会弹出一个对话框,然后就开始画了,比如下图

第一个常用的库是Turtle,它是Python语言中一个很流行的绘制图像的函数库,这个词的意思就是乌龟,你可以想象下一个小乌龟在一个x和y轴的平面坐标系里,从原点开始根据指令控制,爬行出来就是绘制的图形了。

  它最常用的指令就是旋转和移动,比如画个圆,就是绕着圆心移动;再比如上图这个怎么画呢,其实主要就两个命令:

turtle.forward(200)

turtle.left(170)

第一个命令是移动200个单位并画出来轨迹

第二个命令是画笔顺时针转170度,注意此时并没有移动,只是转角度

然后呢? 循环重复就画出来这个图了

好玩吧。

有需要仔细研究的可以看下这篇文章 https://blog.csdn.net/zengxiantao1994/article/details/76588580 ,这个牛人最后用这个库画个移动的钟表,太赞了。

Turtle虽好玩,但是我想要的是我给定数据,然后让它画图,这里就找到另一个常用的画图的库了。

Matplotlib是python最着名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。

使用起来也挺简单,

首先import matplotlib.pyplot as plt 导入画图的图。

然后给定x和y,用这个命令plt.plot(x, y)就能画图了,接着用plt.show()就可以把图形展示出来。

接着就是各种完善,比如加标题,设定x轴和y轴标签,范围,颜色,网格等等,在 https://blog.csdn.net/guoziqing506/article/details/78975150 这篇文章里介绍的很详细。

现在互联网的好处就是你需要什么内容,基本上都能搜索出来,而且还是免费的。

我为什么要研究这个呢?当然是为了用,比如我把比特币的曲线自己画出来可好?

假设现在有个数据csv文件,一列是日期,另一列是比特币的价格,那用这个命令画下:

这两列数据读到pandas中,日期为df['time']列,比特币价格为df['ini'],那我只要使用如下命令

plt.plot(df['time'], df['ini'])

plt.show()

就能得到如下图:

自己画的是不是很香,哈哈!

然后呢,我在上篇文章 https://www.jianshu.com/p/d4013d8a73de 中介绍过求Ahr999指数,那可不可以也放到这张图中呢?不就是加一条命令嘛

plt.plot(df['time'], df['Ahr999'])

图形如下:

但是,Ahr999指数怎么就一条线不动啊, 原来两个Y轴不一致,显示出来太怪了,需要用多Y轴,问题来了。

继续谷歌一下,把第二个Y轴放右边就行了,不过呢得使用多图,重新绘制

fig = plt.figure() # 多图

ax1 = fig.add_subplot(111)

ax1.plot(df['time'], df['ini'], label="BTC price")  # 绘制第一个图比特币价格

ax1.set_ylabel('BTC price') # 加上标签

# 第二个直接对称就行了

ax2 = ax1.twinx()# 在右边增加一个Y轴

ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999")  # 绘制第二个图Ahr999指数,红色

ax2.set_ylim([0, 50])# 设定第二个Y轴范围

ax2.set_ylabel('ahr999')

plt.grid(color="k", linestyle=":")# 网格

fig.legend(loc="center")#图例

plt.show()

跑起来看看效果,虽然丑了点,但终于跑通了。

这样就可以把所有指数都绘制到一张图中,等等,三个甚至多个Y轴怎么加?这又是一个问题,留给爱思考爱学习的你。

有了自己的数据,建立自己的各个指数,然后再放到图形界面中,同时针对异常情况再自动进行提醒,比如要抄底了,要卖出了,用程序做出自己的晴雨表。

‘柒’ 如何使用Python的Pandas库绘制折线图

我们经常会使用Python的Pandas绘制各种数据图形,那么如何使用它绘制折线图呢?下面我给大家分享一下。

工具/材料

Pycharm

‘捌’ Python pandas用法

在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。
使用下面格式约定,引入pandas包:

pandas有两个主要数据结构:Series和DataFrame。

Series是一种类似于一维数组的对象,它由 一组数据 (各种NumPy数据类型)以及一组与之相关的 数据标签(即索引) 组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。

pd.Series(list,index=[ ]) ,第二个参数是Series中数据的索引,可以省略。

Series类型索引、切片、运算的操作类似于ndarray,同样的类似Python字典类型的操作,包括保留字in操作、使用.get()方法。
Series和ndarray之间的主要区别在于Series之间的操作会根据索引自动对齐数据。

DataFrame是一个表格型的数据类型,每列值类型可以不同,是最常用的pandas对象。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。

pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index为指定的列、行索引,并按照顺序排列。

如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值:

数据索引 :Series和DataFrame的索引是Index类型,Index对象是不可修改,可通过索引值或索引标签获取目标数据,也可通过索引使序列或数据框的计算、操作实现自动化对齐。索引类型index的常用方法:

重新索引 :能够改变、重排Series和DataFrame索引,会创建一个新对象,如果某个索引值当前不存在,就引入缺失值。
df.reindex(index, columns ,fill_value, method, limit, ) :index/columns为新的行列自定义索引;fill_value为用于填充缺失位置的值;method为填充方法,ffill当前值向前填充,bfill向后填充;limit为最大填充量; 默认True,生成新的对象,False时,新旧相等不复制。

删除指定索引 :默认返回的是一个新对象。
.drop() :能够删除Series和DataFrame指定行或列索引。
删除一行或者一列时,用单引号指定索引,删除多行时用列表指定索引。
如果删除的是列索引,需要增加axis=1或axis='columns'作为参数。
增加inplace=True作为参数,可以就地修改对象,不会返回新的对象。

在pandas中,有多个方法可以选取和重新组合数据。对于DataFrame,表5-4进行了总结

适用于Series和DataFrame的基本统计分析函数 :传入axis='columns'或axis=1将会按行进行运算。
.describe() :针对各列的多个统计汇总,用统计学指标快速描述数据的概要。
.sum() :计算各列数据的和
.count() :非NaN值的数量
.mean( )/.median() :计算数据的算术平均值、算术中位数
.var()/.std() :计算数据的方差、标准差
.corr()/.cov() :计算相关系数矩阵、协方差矩阵,是通过参数对计算出来的。Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵。
.corrwith() :利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名配对的相关系数。
.min()/.max() :计算数据的最小值、最大值
.diff() :计算一阶差分,对时间序列很有效
.mode() :计算众数,返回频数最高的那(几)个
.mean() :计算均值
.quantile() :计算分位数(0到1)
.isin() :用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中数据的子集
适用于Series的基本统计分析函数,DataFrame[列名]返回的是一个Series类型。
.unique() :返回一个Series中的唯一值组成的数组。
.value_counts() :计算一个Series中各值出现的频率。
.argmin()/.argmax() :计算数据最大值、最小值所在位置的索引位置(自动索引)
.idxmin()/.idxmax() :计算数据最大值、最小值所在位置的索引(自定义索引)

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。下表对它们进行了总结,其中read_csv()、read_table()、to_csv()是用得最多的。

在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。

在许多数据分析工作中,缺失数据是经常发生的。对于数值数据,pandas使用浮点值NaN(np.nan)表示缺失数据,也可将缺失值表示为NA(Python内置的None值)。

替换值
.replace(old, new) :用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。

删除重复数据

利用函数或字典进行数据转换

df.head():查询数据的前五行
df.tail():查询数据的末尾5行
pandas.cut()
pandas.qcut() 基于分位数的离散化函数。基于秩或基于样本分位数将变量离散化为等大小桶。
pandas.date_range() 返回一个时间索引
df.apply() 沿相应轴应用函数
Series.value_counts() 返回不同数据的计数值
df.aggregate()
df.reset_index() 重新设置index,参数drop = True时会丢弃原来的索引,设置新的从0开始的索引。常与groupby()一起用
numpy.zeros()

‘玖’ 如何利用Python中的Pandas库绘制柱形图

我们利用Python的Pandas库可以绘制很多图形,那么如何绘制柱形图呢?下面我给大家分享演示一下。

工具/材料

Pycharm

‘拾’ python(pandas模块)

Pandas是Python的一个数据分析包,最初由AQR Capital
Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的Pydata开发team继续开发和维护,属于PyData项目的一部分,pandas最初被作为金融数据分析工具而开发出来,因此pandas为时间序列分析提供了很好的支持。

Pandas的名称来自于面板数据和python数据分析。panel
data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。

Pandas数据结构:

Series:一维数组,与numpy中的一维array类似。二者与Python基本的数据结构list相近,Series如今能保存不同种数据类型,字符串、boolean值、数字等都能保存在series中。

Time-series:以时间为索引的series。

DataFrame:二维的表格型数据结构,很多功能与R中的data.frame类似,可以将DataFrame理解为Series的容器。

Panel :三维的数组,可以理解为DataFrame的容器。

Panel4D:是像Panel一样的4维数据容器。

PanelND:拥有factory集合,可以创建像Panel4D一样N维命名容器的模块。

阅读全文

与pandas绘图python相关的资料

热点内容
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362
数据查询网站源码 浏览:151
伊克塞尔文档怎么进行加密 浏览:893
app转账是什么 浏览:163