IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> (数据分析三板斧)第二斧Pandas-第一节:Pandas了解 -> 正文阅读

[人工智能](数据分析三板斧)第二斧Pandas-第一节:Pandas了解

一:Pandas了解

(1)什么是Pandas

Pandas是2008年WesMcKinney开发出的库,是一个专门用于数据挖掘的开源Python库,它以Numpy为基础,借力Numpy模块在计算方面性能高的优势,又基于Matplotlib,可以简便的画图,而且还拥有自己独特的数据结构

  • Pandas=Panel+data+analysis

(2)Pandas优势

在学习完Numpy和Matplotlib后还要学习Pandas的原因在于:Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需要的工具,也提供了大量使我们能够快速处理数据的函数和方法。具体来说:

  • Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。

  • Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

  • Pandas 广泛应用在学术、金融、统计学等各个数据分析领域

(3)Pandas安装

  • 自行查阅,安装非常简单

安装好之后,可以通过下面的语句导入Pandas库以及查看其是否能够正常运行

import pandas as pd


mydataset = {
  'sites': ["Google", "Runoob", "Wiki"],
  'number': [1, 2, 3]
}

myvar = pd.DataFrame(mydataset)

print(myvar)

在这里插入图片描述

(4)Pandas核心数据结构

在Pandas中有三类数据结构

  • Series:是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成;它可以保存不同种类的数据类型
  • DataFrame:是一个表格型的数据结构(Excel、SQL等),它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)

二:DataFrame类型

Numpy注重运算,所以对于数据意义的表达没有那么清楚,比如下面用Numpy生成了一个符号正态分布的10支股票5天的涨幅情况

  • 这样的数据表现形式让人有点难受,因为完全不知道它在表达什么
stock_change = np.random.normal(0, 1, (10, 5))
print(stock_change)


[[ 0.22129238  1.72192263  0.49808165 -0.70501369 -0.57315298]
 [-0.05685967 -1.59493883  0.20770355  2.03934052 -0.91647225]
 [-0.64659703 -1.7586049  -0.53091496 -0.95453855  0.84446516]
 [ 0.02877987  1.53110344 -0.90623823  1.41938924 -1.24248129]
 [-0.36990152 -0.17153907  0.24179436  0.82450977  1.1865927 ]
 [-0.14524005 -0.57297533 -0.08680693  0.07105316 -0.12050658]
 [ 0.50399736  1.56385492 -0.38175291  0.52144963  0.51322901]
 [ 0.71534998 -0.61644881  0.15437358  0.00324533 -0.830954  ]
 [-0.65036464 -1.71639338 -1.18670887  0.34092581 -0.8870423 ]
 [-0.89061683 -0.93671895 -0.19911303  0.49350255  2.02240886]]

因此,我们的DataFrame就是为了让数据更有意义的显示。这里可以直接调用pd.DataFrame(),然后将numpy数组传入进去

stock_change = np.random.normal(0, 1, (10, 5))
a = pd.DataFrame(stock_change)
print(a)

你会发现,现在显示形式比之前就舒服多了

在这里插入图片描述

(1)DataFrame结构

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

在这里插入图片描述

因此,上面的那个例子中行列索引表达的意思为

在这里插入图片描述

(2)DataFrame构造方法

DataFrame 构造格式下

pandas.DataFrame( data, index, columns, dtype, copy)
  • data:一组数据(ndarrayseries, map, lists, dict 等类型)。

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

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

  • dtype:数据类型。

  • copy:拷贝数据,默认为 False

举例

a = pd.DataFrame(np.random.randn(4, 5))  # numpy二维随机数组
print(a)

在这里插入图片描述
从以上输出结果可以知道, DataFrame 数据类型一个表格,包含 rows(行) 和 columns(列)

在这里插入图片描述

(3)DataFrame索引

上例中默认显示的索引并不是很合适,没有起到见名知意的作用。我的目的是行索引显示股票支数,列索引显示天数,这里先用列表生成式生成行索引

stock_index = ["股票{}".format(i) for i in range(10)]  # 行索引 

然后在刚才的pd.DataFrame()中传入index=stock_index,即行索引

stock_change = np.random.normal(0, 1, (10, 5))
stock_index = ["股票{}".format(i) for i in range(10)]  # 行索引
a = pd.DataFrame(stock_change, index=stock_index)
print(a)

在这里插入图片描述

对于列索引,我们直接调用Pandas中现成的函数

  • 关于date_range()更为详细的用法可以参照这篇文章点击跳转
date_index = pd.date_range(start='20220510', periods=5, freq='B') #列索引

然后在刚才的pd.DataFrame()中传入columns=date_index,即列索引

stock_change = np.random.normal(0, 1, (10, 5))
stock_index = ["股票{}".format(i) for i in range(10)]  # 行索引
date_index = pd.date_range(start='20220510', periods=5, freq='B')  # 列索引
a = pd.DataFrame(stock_change, index=stock_index, columns=date_index)
print(a)

在这里插入图片描述


还可以通过字典传入

a = pd.DataFrame(
    [
    {'a': 1, 'b': 2},
    {'a': 5, 'b': 10, 'c': 20}
    ]
)
print(a)

在这里插入图片描述

(4)DateFrame常用属性和方法

A:属性

DateFrame说穿了其实就是Numpy二维数组加了行列索引,所以Numpy数组具有的属性,DateFrame基本也有,常用属性有

stock_change = np.random.normal(0, 1, (10, 5))
stock_index = ["股票{}".format(i) for i in range(10)]  # 行索引
date_index = pd.date_range(start='20220510', periods=5, freq='B')  # 列索引
a = pd.DataFrame(stock_change, index=stock_index, columns=date_index)
print(a.shape)  # 形状
print("-"*20)
print(a.index)  # 返回DateFrame行索引列表
print("-"*20)
print(a.columns)  # 返回DateFrame列索引列表
print("-"*20)
print(type(a.values))  # 返回原生Numpy数组
print("-"*20)

在这里插入图片描述

B:方法

经常使用到的方法是head()tail(),因为很多时候我们要频繁查看表的头部和尾部信息

stock_change = np.random.normal(0, 1, (10, 5))
stock_index = ["股票{}".format(i) for i in range(10)]  # 行索引
date_index = pd.date_range(start='20220510', periods=5, freq='B')  # 列索引
a = pd.DataFrame(stock_change, index=stock_index, columns=date_index)
print(a.head(3))  # 查看前三只股表信息
print("-"*20)
print(a.tail(2))  # 查看后两只股票信息

在这里插入图片描述

四:Series类型

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

pandas.Series( data, index, dtype, name, copy)
  • data:一组数据(ndarray 类型)

  • index:数据索引标签,如果不指定,默认从 0 开始

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

  • name:设置名称

  • copy:拷贝数据,默认为 False

举例

a = pd.Series([1, 3, 'str', np.nan, 7])
print(a)

在这里插入图片描述

其中的索引index是可以自己设定的

  • 其实你也可以将字典传入,也能达到这样的效果
a = pd.Series([1, 3, 'str', np.nan, 7], index=['A', 'B', 'C', 'D', 'E'])
print(a)
print("-"*20)
print(a['C'])

在这里插入图片描述

还有一种写法我比较喜欢

a = pd.Series([1, 3, 'str', np.nan, 7])
print(a)
print("-"*20)
a.index = list('ABCDE')
print(a)

在这里插入图片描述


如果执行pandas.index,就会显示其索引情况

a = pd.Series([1, 3, 'str', np.nan, 7], index=['A', 'B', 'C', 'D', 'E'])
print(a)
print("-"*20)
print(a.index)

在这里插入图片描述
如果执行pandas.values(),就会显示其值

a = pd.Series([1, 3, 'str', np.nan, 7], index=['A', 'B', 'C', 'D', 'E'])
print(a)
print("-"*20)
print(a.values)

在这里插入图片描述


它的索引和切片也是一个道理

a = pd.Series([1, 3, 'str', np.nan, 7], index=['A', 'B', 'C', 'D', 'E'])
print(a)
print("-"*20)
print(a['C'])
print(a['A':'D'])

在这里插入图片描述


可以使用pandas.index.name来为索引列起一个名字

a = pd.Series([1, 3, 'str', np.nan, 7], index=['A', 'B', 'C', 'D', 'E'])
print(a)
print("-"*20)
a.index.name = '索引'
print(a)

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:27:02  更:2022-05-11 16:27:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:23:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码