5种创建Dataframe方法

2023-11-10

下面将简要介绍Dataframe的5种创建方法,由于输出结果比较冗余,这里将不会展示输出结果,读者可以自行赋值粘贴,最好使用jupyter运行,并查看结果。另外的,代码中有非常详细的注释。

Dataframe创建方法一

import numpy as np
import pandas as pd

data1 = {
    "a":[1,2,3],
    "b":[4,5,6],
    "c":[7,8,9]   
}
data2 = {
    "one":np.random.rand(3),
    "two":np.random.rand(3)    # 这里尝试“two”:np.random.rand(4)会报错,
}

df1 = pd.DataFrame(data1)
# df1 = pd.DataFrame(data1,index = ["a","b","c"])
df2 = pd.DataFrame(data2)
print(df1)
print(df1.index)
print(df1.columns)
print()
print(df2)
print(df2.index)
print(df2.columns)

# 总结:由数字/list组成的字典,创建Dataframe,columns为字典的key,index为默认数字标签
# 并且字典的值的长度必须保持一致
# print("------------------------------------------")
# df1.columns = ["b", "a","c"]
# print(df1)  # 这里将会对columns参数重命名,数值不变,但是必须整体修改columns,即参数个数与columns个数相同
# df2.columns = ["one1","two2"]
# print(df2)
print("-------------------------------------------")
print(df1)
df1 = pd.DataFrame(data1, columns = ["b", "c", "a", "d"])
print(df1)
print('----------------------------------------------')
df1 = pd.DataFrame(data1, columns = ["b", "c"])
print(df1)

# columns 参数:可以重新指定列的顺序,格式为list,如果现有数据中没有该列,则产生NaN值
# 如果columns重新指定的时候,列的数量可以少于原数据
print("---------------------------------------------")
df2 = pd.DataFrame(data2, index = ["f1", "f2", "f3"])  # 指定index
print(df2)
# 尝试index = ["f1", "f2", "f3", "f4"],这里会报错,因此在指定索引的时候,其格式为list,
# 且必须将长度保持一致

Dataframe创建方法二:由Series组成的字典

data1 = {"one":pd.Series(np.random.rand(2)),
            "two":pd.Series(np.random.rand(3))
        }  # 没有设置index的Series
data2 = {"one":pd.Series(np.random.rand(2), index = ["a", "b"]),
        "two":pd.Series(np.random.rand(3), index = ["a", "b", "c"])}

print(data1)
print(data2)
print("-----------------------------------")
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(df1)
df3 = pd.DataFrame(data1, index = ["a", "b"])
print(df3)
print(df2)
# print()

# 总结:由Series组成的字典,创建Dataframe, columns为字典key, index为Series的标签(如果
#     Series没有指定标签,则默认数字标签)

# 另外的, Series可以长度不一样,生成的Dataframe会出现NaN值。这里和前面的使用list的字典创建爱
# Dataframe最大的不同点,它会自动对齐

方法三,通过二维数组之间创建 (最常用的方法)

ar = np.random.rand(9).reshape(3,3)
print(ar)
df1 = pd.DataFrame(ar)
print(df1)
print()
df2 = pd.DataFrame(ar, index = ["a","b","c"], columns = ["one", "two", "three"])
print(df2)

print("-------------------尝试---------------------------")
# index和columns长度不等于原数组的情况
# df2 = pd.DataFrame(ar, index = ["a","b","c"], columns = ["one", "two", "three", "four"])  # 报错
# ValueError: Shape of passed values is (3, 3), indices imply (4, 3)

# df2 = pd.DataFrame(ar, index = ["a","b","c", "d"], columns = ["one", "two", "three"])  # 报错
# ValueError: Shape of passed values is (3, 3), indices imply (3, 4)

# df2 = pd.DataFrame(ar, index = ["a","b"], columns = ["one", "two", "three"])  # baocuo
# ValueError: Shape of passed values is (3, 3), indices imply (3, 2)

# df2 = pd.DataFrame(ar, index = ["a","b", "c"], columns = ["one", "two"])  # baocuo
# ValueError: Shape of passed values is (3, 3), indices imply (2, 3)

df2 = pd.DataFrame(ar, columns = ["one", "two","three"])
print(df2)

# 总结:通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不能指定index和columns,
# 两者均返回默认数字格式

# index和columns指定长度和原数组保持一致

方法四:由字典组成的列表

data = [{"one":1,"two":2},{"one":5,"two":10,"three":15}]
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, index = ["a", "b"])
df3 = pd.DataFrame(data, columns = ["one", "two"])
df4 = pd.DataFrame(data, columns = ["one", "two", "three"])
df5 = pd.DataFrame(data, columns = ["one", "two", "three", "fff"])
print(df1)
print()
print(df2)
print()
print(df3)
print()
print(df4)
print()
print(df5)
# 总结:由字典组成的列表创建Dataframe, columns为字典的key, index不做指定默认为数字标签

方法五:由字典组成的字典

import numpy as np
import pandas as pd

data = {
    "Jack":{"math":90, "english":89, "art":78},
    "Marry":{"math":82, "english":95, "art":96},
    "Tom":{"math":85, "english":94}
}
df1 = pd.DataFrame(data)
print(df1)
print()

df2 = pd.DataFrame(data, columns = ["Jack", "Tom", "Bob"])
print(df2)
print()

df3 = pd.DataFrame(data, index = ["a", "b", "c"], columns = ["Jack", "Tom", "Bob"])
# AttributeError: 'list' object has no attribute 'astype'
print(df3)
print()
df4 = pd.DataFrame(data, index = ["art", "math", "english"], columns = ["Jack", "Tom", "Bob"])
print(df4)
print()

print(df1["Jack"])
print(df1.loc["art"])

# 总结:columns参数可以增加和减少现有列,如出现新的列,值为NaN
# index在这里和之前不同,并不能改变原有index,如果出现新的标签,值为NaN(非常重要)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5种创建Dataframe方法 的相关文章

随机推荐

  • IDEA 类名及方法名为红色,但是能正常启动-处理办法

    今天在切换分支过后 idea里面很多类名 方法名报红 提示类等找不到 但是不影响功能 解决办法 点击 idae 的 File gt Invalideate Caches Restart 清除缓存并重启即可 UG7O9VKKH6 eyJsaW
  • Spark:常用算子总结大全

    目录 park的算子的分类 从大方向来说 Spark 算子大致可以分为以下两类 1 Transformation 变换 转换算子 这种变换并不触发提交作业 完成作业中间过程处理 2 Action 行动算子 这类算子会触发 SparkCont
  • 小白的高德地图初体验(二)——聚合点

    小白的高德地图初体验 二 聚合点 说到高德地图 肯定要推荐官方文档 传送门 走你 小白的高德地图初体验 一 打点 小白的高德地图初体验 二 点聚合 小白的高德地图初体验 三 轨迹 小白的高德地图初体验 四 矢量图形 小白的高德地图初体验 五
  • Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize

    最近把项目中es 从1 7 3 升级 到 2 2 2 遇到如下异常 exception org springframework web util NestedServletException Handler processing faile
  • Android Studio 2.4 Preview(译文)

    原文地址 http tools android com tech docs android profiler Android的探查Android Studio中预览2 4 新的Android探查器在Android 2 4工作室预览窗口代替了
  • Palindrome Partitioning

    Given a string s partition s such that every substring of the partition is a palindrome Return all possible palindrome p
  • pip 和conda

    区别 pip是Python包的通用管理器 conda是一个与语言无关的跨平台环境管理器 pip在任何环境中安装python包 conda需要安装在conda环境中装任何包 Pip代表Pip Installs Packages 是Python
  • seaborn palette参数各配色方案及显示效果

    使用方法 以采用Paired r配色方法为例 通过调用barplot palette Spectral r 来使用配色 Paired r Accent Accent r Blues Blues r BrBG BrBG r BuGn BuGn
  • STM32 基础系列教程 5 – 系统定时器

    前言 学习stm32 systime的使用 用基本定时器产生定时1ms定时中断 用于参生1ms系统时钟节拍 并实现将1ms 节拍改成500us 或其它时间功能 并实产生的时间节拍为机基准实现控制LED闪烁 示例详解 基于硬件平台 STM32
  • Centos7.5 防火墙关闭但是除22端口其他端口无法访问问题

    centos7系统 关闭 firewalld防火墙 但是除了22端口 其余端口无法被外界访问 本地访问正常 我这里是服务器缓存问题 将服务器防火墙重启刷新一下就可以正常使用了 根据下面命令 操作 firewalld 防火墙 启动 syste
  • 关于前后台日期格式化问题 ,@JsonFormat、@JSONField、@DateTimeFormat

    大家都知道可能前台表单提交后台 或者后台 实体类json 序列化到前台可能格式不是我们想要的情况 这时候可能就需要上面三个注解来帮忙 但是 本人在项目使用过程中 使用 JsonField 一直失效 百思不得其解 难道是 在springboo
  • 爬虫之添加代理(五)

    验证代理是否可用 try telnetlib Telnet 221 15 192 96 port 1080 timeout 3 except print ip无效 else print ip有效 添加代理 添加proxy属性 import
  • 【机器学习】GRU 讲解

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 RNN 讲解 LSTM 讲解 3 GRU 3 1 网络结构 GRU 是循环神经网络的一种 和 LSTM 一样 是为了解决长期依赖问题 GRU 单元结构如下
  • Overleaf使用tips(自己随手记)

    使用中文输入 导入包 usepackage UTF8 ctex 切换编译器为XeLatex 另起一段 直接空几个行就行 比如 注释 选中后ctrl 标题的使用 section 这是一级标题 subsection 这是二级标题 subsubs
  • TVM编译安装

    本文是在已大致了解tvm功能和架构的基础上 根据官方文档 在x86 64 Ubuntu 18 04 GPU Pytorch1 8 0上安装TVM的流程 参考文档 TVM安装官方文档 llvm下载链接 1 下载源代码 从tvm官网下载源代码
  • 基于粒子群算法优化支持向量机(PSO-SVM)的时间序列预测。模型评价指标包括:R2、MAE、MSE、RMSE和MAPE等,代码质量极高,方便学习和替换数据。

    清空环境变量 warning off 关闭报警信息 close all 关闭开启的图窗 clear 清空变量 clc 清空命令行 tic 导入数据 f xlsread windspeed xls Sheet1 B2 B1001 x y da
  • Jina AI x 矩池云

    近 5 年以来 图片 视频 语音等非结构化数据的数量 出现了爆发式增长 随着深度学习技术的不断升级 深度表征学习 迁移学习 对比学习等技术日益成熟 非结构化数据的搜索也逐渐形成可能 在此背景下 专注于神经搜索技术的商业开源软件公司 Jina
  • DRM框架(vkms)分析(3)----connector->func && connector->helper_private的使用

    一 connector gt func drm connector funcs类型的对象实例 其中有些对象实例可直接使用helper函数 有些可以自定义 还有一些可以忽略掉不赋值的 struct drm connector funcs co
  • ubuntu12.04搭建android开发环境

    一直准备学一点Linux的东西 一直没有付诸行动 这个周末准备安装一下 做了将近半年的android开发 准备学一点关于框架和源码的东西 安装之前也百度谷歌了很多次 也看了网上不少的资料 总结一点 就是对于像我这种入门级的人来说 还是不够明
  • 5种创建Dataframe方法

    下面将简要介绍Dataframe的5种创建方法 由于输出结果比较冗余 这里将不会展示输出结果 读者可以自行赋值粘贴 最好使用jupyter运行 并查看结果 另外的 代码中有非常详细的注释 Dataframe创建方法一 import nump