博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python笔记:Pandas DataFrames 的使用
阅读量:4249 次
发布时间:2019-05-26

本文共 4693 字,大约阅读时间需要 15 分钟。

Pandas DataFrames 是具有带标签的行和列的二维数据结构,可以存储很多类型的数据。

使用 Pandas Series 字典手动创建一个 DataFrame

  • 第一步是创建 Pandas Series 字典。
  • 第二步, 在字典创建完毕后,我们可以将该字典传递给 pd.DataFrame() 函数。
import pandas as pd# 创建一个Pandas Series字典items = {
'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']), 'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}# 输出看下是否是个字典print(type(items))shopping_carts = pd.DataFrame(items)# 不使用 print,直接在jupyter notebook 上输出shopping_carts

输出:

shopping_carts 显示输出为:

这里写图片描述

此处:

  • 行和列的标签以粗体形式显示
  • DataFrame 的行标签根据构建字典所用的两个 Pandas Series 的索引标签创建而成
  • DataFrame 的列标签来自字典的键
  • 列按照字母顺序排序,而不是字典中的顺序, 而当我们从数据文件中向 DataFrame 加载数据时,不会发生这种情况
  • 该 DataFrame 中出现了一些 NaN 值。NaN 是指非数字,Pandas 通过这种方式表示该行和列索引没有值,在创建 DataFrame 时,如果特定行索引的特定列没有值,Pandas 将用 NaN 值填充
  • 如果要将此数据馈送到机器学习算法中,我们首先需要删掉这些 NaN 值
  • 在上述例中,我们使用具有定义清晰的索引的 Pandas Series 字典创建了 Pandas DataFrame
  • 如果我们不向 Pandas Series 提供索引标签,Pandas 在创建 DataFrame 时将使用数字行索引
import pandas as pd# We create a dictionary of Pandas Series without indexes# 创建一个没有索引的 Pandas Seriesdata = {
'Bob' : pd.Series([245, 25, 55]), 'Alice' : pd.Series([40, 110, 500, 45])}# 创建一个 DataFramedf = pd.DataFrame(data)# 显示 DataFramedf

输出显示为:

这里写图片描述

这里:Pandas DataFrame 的行索引从 0 开始,就像 NumPy ndarray 的索引一样。

从 DataFrame 中提取信息

  • 和 Pandas Series 一样,我们也可以使用属性从 DataFrame 中提取信息。
  • 我们输出 shopping_carts DataFrame 中的一些信息
import pandas as pd# 创建一个Pandas Series字典items = {
'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']), 'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}shopping_carts = pd.DataFrame(items)print('shopping_carts这个DataFrame的形状:', shopping_carts.shape)print('shopping_carts这个DataFrame的维度:', shopping_carts.ndim)print('shopping_carts这个DataFrame拥有的元素总数为:', shopping_carts.size, '个')print()print('shopping_carts这个DataFrame的数据为:\n', shopping_carts.values)print()print('shopping_carts这个DataFrame的行索引为:', shopping_carts.index)print('shopping_carts这个DataFrame的列索引为:', shopping_carts.columns)

输出:

shopping_carts这个DataFrame的形状: (5, 2)shopping_carts这个DataFrame的维度: 2shopping_carts这个DataFrame拥有的元素总数为: 10 个shopping_carts这个DataFrame的数据为: [[245. 500.] [ nan  40.] [ nan 110.] [ 25.  45.] [ 55.  nan]]shopping_carts这个DataFrame的行索引为: Index(['bike', 'book', 'glasses', 'pants', 'watch'], dtype='object')shopping_carts这个DataFrame的列索引为: Index(['Bob', 'Alice'], dtype='object')

在 Pandas 中,选择特定数据存放于DataFrame中

在这里我们只对某列数据感兴趣, 我们可以通过关键字 columns 和 index 选择要将哪些数据放入 DataFrame 中。

import pandas as pd# 创建一个Pandas Series字典items = {
'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']), 'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}bob_shopping_cart = pd.DataFrame(items, columns=['Bob'])# We display bob_shopping_cartbob_shopping_cart

输出为:

这里写图片描述

  • 选择特定几行的DataFrame
import pandas as pd# 创建一个Pandas Series字典items = {
'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']), 'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}# 创先一个只选择特定几行的DataFramesel_shopping_cart = pd.DataFrame(items, index = ['pants', 'book'])# 展示该 DataFramesel_shopping_cart

输出:

这里写图片描述

  • 选择特定某行和某列
import pandas as pd# 创建一个Pandas Series字典items = {
'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']), 'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}# 创建只包含Alice列,且索引为glasses, bike的DataFramealice_sel_shopping_cart = pd.DataFrame(items, index = ['glasses', 'bike'], columns = ['Alice'])# 显示该DataFramealice_sel_shopping_cart

输出显示为:

这里写图片描述

使用列表(数组)字典手动地创建 DataFrame

  • 注意:字典中的所有列表(数组)长度必须一样
import pandas as pd# 创建一个数组字典data = {
'Integers' : [1,2,3], 'Floats' : [4.5, 8.2, 9.6]}# 创建一个DataFrame df = pd.DataFrame(data)# 显示df

输出:

这里写图片描述

  • 我们创建的 data 字典没有标签索引,因此 Pandas 在创建 DataFrame 时自动使用数字行索引。
  • 我们可以通过在 pd.DataFrame() 函数中使用关键字 index,为行索引添加标签。
import pandas as pddata = {
'Integers' : [1,2,3], 'Floats' : [4.5, 8.2, 9.6]}# 创建一个DataFrame并为每行添加行索引df = pd.DataFrame(data, index = ['label 1', 'label 2', 'label 3'])# 显示df

输出显示:

这里写图片描述

使用 Python 字典列表来手动创建 Pandas DataFrame

import pandas as pditems2 = [{
'bikes': 20, 'pants': 30, 'watches': 35}, {
'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]# 创建一个DataFramestore_items = pd.DataFrame(items2)# 显示DataFramestore_items

输出:

这里写图片描述

同样:可以通过在 pd.DataFrame() 函数中使用关键字 index,为行索引添加标签

import pandas as pd# 创建一个字典列表items2 = [{
'bikes': 20, 'pants': 30, 'watches': 35}, {
'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]# 创建一个DataFrame并指定row indexstore_items = pd.DataFrame(items2, index = ['store 1', 'store 2'])# 显示DataFramestore_items

显示:

这里写图片描述

你可能感兴趣的文章
Makefile快速入门学习笔记
查看>>
Elasticsearch、Logstash 、kibana安装配置
查看>>
Spring Boot 解决跨域问题的 3 种方案!
查看>>
SQL 性能优化,开发注意事项
查看>>
logback配置文件模板
查看>>
指针函数和冒泡排序法算法案例
查看>>
批处理修改地址为静态和动态的方法
查看>>
easyui $.messager.alert失效问题
查看>>
android studio 删除module
查看>>
android jsbridge实现原理简述
查看>>
java继承中的重写和隐藏
查看>>
java内部类为什么可以访问外部类属性方法
查看>>
StringBuilder StringBuffer 如何清空
查看>>
android软键盘弹起面试题
查看>>
HashMap实现原理和扩容及高版本优化
查看>>
java集合之LinkedHashMap解析
查看>>
Messenger和aidl的关系&aidl支持多线程吗,messenger呢
查看>>
AndroidManifest.xml文件何时被加载?如何查看apk的AndroidManifest
查看>>
如何判断一个对象是否可回收,GC回收对象的过程方式,finilized函数
查看>>
java普通for循环和增强for循环中做集合增删会不会出错?
查看>>