(Panel Data,面板数据)是在Numpy的基础上开发的,是Python最强大的数据分析和探索工具之一,作为金融数据分析工具而开发,支持类似于SQL语句的模型,支持时间序列分析。该工具库可以帮助数据分析师进行数据类型转换、缺失值的处理、描述性统计分析、数据的汇总等。

&工具库中包含的函数,可以使用如下命令:

import pandas as pd

dir(pd)

Pandas 中最重要的是Series和DataFrame子类,其导入方法如下:

from pandas import Series,DataFrame

Pandas 可以进行统计特征计算,包括均值、方差、分位数、相关系数和协方差等,这些统计特征可以反应数据的整体分布。

mean():

std():

cov():

var():

describe():非NaN数据个数、均值、标准差、最小值、样本25%、50%和75%分位数,最大值

1.Pandas 的序列与数据框

Pandas 数据结构的范围可以从一维到三维。Series(序列)是一维的,DataFrame(数据板)是二维的,Panel是三维甚至更高维的数据结构。通常,Series和DataFrame可以用于大多数统计、工程、财务和社会科学的场景中。

Series:它是一个带标签的一维数组,可以用于存储任意类型数据,例如整型、浮点型、字符串和其他有效的Python对象。它的行标签成为index。

DataFrame:它是一个带标签的二维数组,有行和列。列可以有多种类型。DataFrame可以看作二维结构的数组,例如电子表格和数据库表格。DataFrame也可以看作包含多个不同类型的Series的集合。

Panel:在统计学和经济学中,Panel data(面板数据)指多维数据,这个多维数据包括不同时间的不同测量结果。该数据结构的名称来源于其概念。与Series和DataFrame相比,面板数据是不太常用的一种数据结构。

1.1序列

构造一个序列可以如下方式实现:

1-通过同类型列表或元组构建

2-通过字典构建

3-通过Numpy中的一维数组构建

4-通过数据框中的某一列构建

例2.29 序列构建示例

#例2.29 序列构建示例

#程序文件Pex2_29.py

import pandas as pd

import numpy as np

s1 = pd.Series(np.array([10.5,20.5,30.5]))#由数组构造序列

s2 = pd.Series({"北京":10.5,"上海":20.5,"广东":30.5})#由字典构造序列

s3 = pd.Series([10.5,20.5,30.5],index = ['b','c','d'])#给出行标签命名

print(s1);

print("------------");

print(s2);

print("------------");

print(s3)

image.png

通过以上显示结果可以看出,序列由两列构成。由数组构建的序列,其第一列是序列的行索引(行号),自动从0开始,第二列才是序列的实际值。通过字典构造的序列,第一列是具体的行名称(index),对应到字典中的键,第二列是序列的实际值,对应到字典中的值。

序列与一维数组也有很高的相似性,获取一维数组元素的所有方法都可以应用在序列上,而且数组的数学和统计函数也同样可以应用到序列对象上,不同的是,序列会有更多其他处理方法。

#例2.30 序列构建示例

#程序文件Pex2_30.py

import pandas as pd

import numpy as np

s = pd.Series([10.5,20.5,30.5],index = ['a','b','c'])

a = s['b']#取出序列中的第2个元素

b1 = np.mean(s)

b2 = s.mean()

数据框

DataFrame是由行和列构成的二维数据结构。虽然索引和列名称是可选的,但是最好把它们设置一下,索引可以看成是行标签,列名称可以看成是列标签。

数据框创建方式如下:

DataFrame(data=二维数据[,index = 行索引[,columns = 列索引[,dtype = 数据类型]]])

其中的data可以是二维Numpy数组,data如果是字典时,其值为一维数组,键为数据框的列名。

#例2.31 序列构建示例

#程序文件Pex2_31.py

import pandas as pd

import numpy as np

a = np.arange(1,7).reshape(3,2)

df1 = pd.DataFrame(a)

df2 = pd.DataFrame(a,index = ['a','b','c'],columns = ['x1','x2'])

df3 = pd.DataFrame({'x1':a[:,0],'x2':a[:,1]})

print(df1);

print('-------')

print(df2);

print('-------')

print(df3);

image.png

2.外部文件的存取

在实际应用中,更多的情况是通过Python读取外部数据,这些数据可能是文本文件(如csv、txt等类型)和电子表格Excel文件等。本小节实现基于Pandas库实现文本文件和Excel文件的读取。

Pandas 模块中的read_csv函数,可以读取txt和csv(逗号分隔的文本文件)文本格式数据。

read_csv的调用格式为:

read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

其中几个重要参数如下:

(1)filepath_or_buffer:可以是URL和文件,可用URL类型包括http,ftp等。

(2)sep:如果不指定参数,则会尝试使用逗号分隔。

(3)delimiter:定界符,备选分隔符(如果指定该参数,则sep参数失效)。

(4)header:header = None,指明原始数据文件没有列标题,这样read_csv会自动加上列标题。header = 0表示文件第一行为列标题(索引从0开始)。header参数可以是一个list,例如:[0,1,3],这个list表示将文件中的第1,2,4行作为列标题(意义着每一列多个标题),这些行将被忽略掉。

(5)names:如果原数集中没有字符,可以通过该参数在数据读取时给数据添加具体的表头。

(6)index_col:用作行索引的列表号或列名,如果给定一个序列则有多个行索引。

(7)skiprows:数据读取时,假定需要跳过原数据集开头的行数。

(8)skipfooter:数据读取时,指定需要通过原数据集末尾的行数。

(9)nrows:指定读取数据的行数。

(10)na_values:指定原数集中哪些特征的值作为缺失值。

(11)skip_blank_lines:读取数据时是否需要通过原数据集中的空白行,默认为True.

(12)parse_dates:如果参数值为True,则尝试解析数据框的行索引;如果参数为列表,则尝试解析对应的日期列;如果参数为嵌套列表,则将某些列合并为日期列;如果参数为字典,则解析对应的列(字典中的值),并生成新的字段名(字典中的键)。

(13):指定原数据集中的千分位符。

image.png

#例2.32 序列构建示例

#程序文件Pex2_32.py

import pandas as pd

a = pd.read_csv('Pdata2_32.txt',sep = ',',parse_dates = {'birthday':[0,1,2]},skiprows = 2,skipfooter = 2,comment = '#',thousands = '&',engine = 'python')

#parse_dates参数通过字典实现前三列的日期解析,并合并为新字段birthday

print(a)

b = pd.read_csv('Pdata2_32.txt',sep = ',',skiprows = 2,skipfooter = 2)

print('-----------------------')

print(b)

image.png

read_excel()函数可以读入Excel文件中的数据,其常用调用格式为:

read_excel(io, sheet_name=0, header=0, names=None, index_col=None, parse_cols=None, usecols=None, dtype=None)

其中:

(1)io:Excel文件名

(2)sheet_name:表单名或单序号

image.png

#例2.32 序列构建示例

#程序文件Pex2_33.py

import pandas as pd

a = pd.read_excel('Pdata2_33.xlsx',usecols = range(1,4))#提取第2列到第4列的数据

b = a.values#提取其中的数据

c = a.describe()#对数据进行统计描述

print(a)

print('---------------------------')

print(b)

print('---------------------------')

print(c)

image.png

#例2.34 序列构建示例

#程序文件Pex2_34.py

import pandas as pd

import numpy as np

a = pd.read_excel('Pdata2_33.xlsx',usecols = range(1,4))

b = a.values

#生成DataFrame类型数据

c = pd.DataFrame(b,index = np.arange(1,11),columns = ['用户A','用户B','用户C'])

f = pd.ExcelWriter('Pdata2_34.xlsx')#创建文件对象

c.to_excel(f,'sheet1')

c.to_excel(f,'sheet2')

f.save()

image.png

有时数据读入后并不是对整体数据进行分析,而是分析数据中的部分子集。在Pandas库中实现数据子集的获取可以使用iloc,loc两种方法,这两种方法既可以对数据进行筛选,也可以实现变量的筛选,它们的语法可以表示成

[rows_select,cols_select]

iloc:只能通过行号和列号进行数据的筛选,该索引方式与数组的索引方式类似,都是从0开始,可以间隔取号,对于切片仍然无法取到上限。

loc:可以指定具体的行标签(行名称)和列标签(字段名),而且,还可以将row_select指定为具体的筛选条件。

#例2.35 序列构建示例

#程序文件Pex2_35.py

import pandas as pd

import numpy as np

a = pd.read_excel('Pdata2_33.xlsx',usecols = range(1,4))

b1 = a.iloc[np.arange(6),[0,1,2]]#通过标号筛选数据

b2 = a.loc[np.arange(6),['用户A','用户B']]#通过标签筛选数据

print(b1)

print('---------------------------------')

print(b2)

image.png

python数学建模可视化,[Python与数学建模-数据处理与可视化]-3数据处理工具Pandas...相关推荐

  1. 1024,一封写给CSDN家园Python初学者的信 | Python初级、中级、高级学习路线

    又是一年1024,祝所有程序员节日快乐,健康开心,祝CSDN越来越好.转眼,已经在CSDN分享了十多年博客,感谢大家的陪伴和祝福,在这里我与许多人成为了朋友,感恩.非常遗憾,这次没能去长沙岳麓书院见很 ...

  2. 1024,一封写给CSDN家园Python初学者的信 Python初级、中级、高级学习路线

    又是一年1024,祝所有程序员节日快乐,健康开心,祝CSDN越来越好.转眼,已经在CSDN分享了十多年博客,感谢大家的陪伴和祝福,在这里我与许多人成为了朋友,感恩.非常遗憾,这次没能去长沙岳麓书院见很 ...

  3. 数学建模用python分析gdp_【志领学院】HiMCM数学建模 商业事件建模分析——活动回顾...

    原标题:[志领学院]HiMCM数学建模 商业事件建模分析--活动回顾 -2021- 志领学院 · 激发无限潜能 · HiMCM, 全称HighSchool Mathematical Contest i ...

  4. python数学建模基础教程_Python数学建模极简入门(二)差分方程

    差分方程这名字大家可能不太熟悉,其实差分方程指的是下面这种: 差分方程 其实就是我们数学中数列的递推公式,在以前学数学的时候,往往要通过递推公式来求通项公式才能快速地得到某一项的值,现在借助编程的话, ...

  5. 备战数学建模(Python)

    备战数学建模(Python) Python之建模规划篇 Python之建模数值逼近篇 Python之建模微分方程篇 由于美国大学生数学建模大赛很快就要开赛了,所以我就打算在这几天内,好好的看看< ...

  6. 数学建模竞赛用python_2018全国中学生数学建模与Python编程夏令营

    全国中学生数学建模与Python编程夏令营招生简章 为什么要学习数学建模? 1)国务院关于新一代人工智能发展<规划>:在中小学阶段设置人工智能相关课程,实施全民智能教育项目,在中小学阶段设 ...

  7. python数学建模大赛_2018全国中学生数学建模与Python编程冬令营

    全国中学生数学建模与Python编程冬令营招生简章 为什么要学习数学建模? 1)国务院关于新一代人工智能发展<规划>:在中小学阶段设置人工智能相关课程,实施全民智能教育项目,在中小学阶段设 ...

  8. python初中数学建模培训_初中生数学建模培养

    初中生数学建模培养 一.认识数学建模 目前, "数学建模教学理论"还不完善,对"数学建模"的含义还有不同的理解. 数学模型: 对于现实中的原型, 为了某个特定目 ...

  9. 【复杂网络建模】——Python可视化重要节点识别(PageRank算法)

    目录 一.复杂网络建模 二.建模的算法 三.使用PageRank算法进行网络重要节点识别 1.PageRank算法 2.基于PageRank算法的ER网络重要节点识别 3.基于PageRank算法的小 ...

  10. 信用风险建模 in Python 系列 2 - 独立模型上

    本文含 5120 字,44 图表截屏 建议阅读 39 分钟 0 引言 本文是「信用风险建模 in Python」系列的第二篇,其实在之前的 Cufflinks 那篇已经埋下了信用风险的伏笔, 信用组合 ...

最新文章

  1. tabcontainer控件太长_AjaxControlToolKit--TabContainer控件的介绍收藏[摘录]
  2. simulink里面pid模块N的参数什么意思?
  3. 关于fseek不能定位大于2G文件的问题
  4. JSONP解决跨域及ajax同步问题
  5. 前端项目 开发者环境 和 正式环境 区别
  6. Verilog语言实现并行(循环冗余码)CRC校验
  7. 虚拟仿真引擎消息机制
  8. 如何在windows中使用cmd命令去编译,运行C++程序
  9. 【转载】聪明说话35招
  10. 关于java中Exception异常
  11. ElasticSearch开发问题汇总(不断更新中)
  12. web of science,SSCI索引,带你入门!
  13. 力软 框架 转 mysql_开发框架-.Net:Learun(力软敏捷开发)
  14. python写二进制文件_初学Python写二进制文件
  15. linux统计文件大小大于100k,Centos / Linux设置logrotate为所有日志的最大文件大小
  16. python天眼查爬虫_普通用户的天眼查爬取
  17. Struts2漏洞爆发 知道创宇云安全已拦截近万攻击样本
  18. 永磁同步电机力矩控制(九):定子磁场中的若干相关概念
  19. 2021秋招河南联通面经
  20. Cointelegraph| 安全多方计算对早期隐私格局的影响

热门文章

  1. mysql查看重复数据结构_mysql 数据库重复数据结构
  2. mysql 加密 en_MySQL8.0 的表空间文件加密控制
  3. 力扣-150 逆波兰表达式求值
  4. React Native 介绍
  5. DAY18 面向对象三大特性之继承
  6. Jmeter连接SqlServer数据库并操作
  7. 八、Python 之内置函数(。。。)
  8. iOS CocoaPods自动管理第三方开源库
  9. 全代码实现ios-1
  10. 几种常用的视频接口(端子)