首页 > 数据库 >天体数据库:数据准备(第 2 部分)

天体数据库:数据准备(第 2 部分)

时间:2022-09-18 02:34:23浏览次数:119  
标签:df 数据库 表中 我们 准备 星座 行星 constellation 天体

天体数据库:数据准备(第 2 部分)

Photo by 泽维尔米兰达 on 不飞溅

我需要使用 PostgreSQL 创建一个天体数据库 这个 freeCodeCamp 项目 .如果您对“天体”一词不熟悉,它指的是在太空中发现的行星、恒星、卫星和其他自然事物。而且,毫无疑问,创建具有多个表的数据库的第一步是数据准备。

在本文中,我将演示如何在开始编写 SQL 查询之前准备数据。我将构建的表格中的每一条信息都是从互联网上收集的,因此非常感谢对此处提供的信息进行任何更正。

点击这里 读书 天体数据库:数据准备(第 1 部分) 如果你还没有。

现在我们将继续创建下一个表:行星表。

让我们首先查看与之前的月球表相对应的行星名称列表。请记住,每个卫星都应该有一个指向行星表行之一的外键。因此,我们必须确保行星表包含这个行星列表。

 must_have_planets = df_moon.planet.unique()  
 打印(must_have_planets)

现在,让我们使用网络抓取来获取行星表 这个网站 .

有几个专栏,但我只会使用我特别感兴趣的专栏。

现在我对这张桌子感觉很舒服,让我们看看它是否包含地球上的每个行星 must_have_planets 列表。如果没有,我们将不得不包括表中缺少的行星信息。

 对于 must_have_planets 中的行星名称:  
 如果planet_name 不在df_planet.name.values 中:  
 打印(行星名称) ## 输出:  
 # 五层龙  
 #瓦尔达

您可以从上面的代码中看到行星的数据 五层龙 瓦尔达 尚未包含在表中。所以,我们将包括它。

我们可以更新 行星 月亮表中的列与 行星编号 现在我们已经完成了所有行星的名称并为每个行星分配了一个行星的 ID。

创建第一个表:月球表(最终)

创建星座和星表

由于每个行星都应该有一个外键来引用星表中的一行,我们可能要开始考虑如何连接行星表和星表之间的点。

我能想出的最佳解决方案是使用星座表。可以定位行星所在的星座。由于行星在平面内绕太阳运行,它们比背景恒星更靠近我们,并且似乎只在某些星座中移动( 资源 ),因此是双引号。当我说背景星星时,我指的是星座,它们是天空中有意义的星星图案。最亮的恒星也出现在每个星座中。因此,我们可以在行星表中添加一列,指示行星所在星座中最亮的恒星。

[1] 天空直播, 太阳系主要天体 , https://theskylive.com/planets

[2] 天空直播, 小行星 , https://theskylive.com/asteroids-and-dwarf-planets

[3] 50000夸尔 . https://usuaris.tinet.cat/klunn/quaoar.html

[4] 维基百科, 225088共工 , https://en.wikipedia.org/wiki/225088_Gonggong

地球、奥库斯和瓦尔达是我无法找到有关其星座的任何信息的三颗行星。然而,根据 本文 ,离地球最近的恒星都在半人马座,所以我将半人马座作为地球星座放在表中。 Orcus 也被称为 Plutino,所以我认为将人马座指定为它的星座可能不会错。此外,瓦尔达是双星跨海王星小行星,因此我给它一个与海王星相同的星座,也就是水瓶座。

我们可以再次使用网络抓取 这个维基百科页面 获取星座表。

出于实用性,我想将星号栏在其记录中使用的希腊字母更改为我们的字母表。如果你进一步检查,星星的名字也包含[8],所以我也会省略它们。

 df_constellation.star.values

 df_constellation.star.values

现在可以使用星座表获得每个行星的恒星名称,然后我们可以通过省略我们不使用的星座名称来尝试使星座表尽可能简单。我决定以这种方式处理这个项目。但是,您可以选择保留每个星座的名称。

 keep_constellation = df_planet_constellation.constellation.unique()  
 保持星座

 df_constellation = df_constellation[df_constellation.name.isin(keep_constellation)] df_constellation = df_constellation.reset_index(drop=True)  
 df_星座

现在我们有了包含星名的星座表,我们可以从中创建星表。这表明我们将使用的恒星是Sadalsuud、Hamal、Arcturus、Deneb Algedi、Rigil Kentaurus、Diphda、Beta Comae Berenices、Regulus、Rasalhague、Enif、Kaus Australis、Aldebaran 和 Spica。

如果你记得 ” 小天文学 ,”我们可以使用两个链接来构建星表。实际上,它是由许多明星名单组成的。虽然我已经努力从网站上收集数据,但这样做比简单地手动收集我们想要的每个星星的数据需要更多的工作。因此,我将创建一篇关于用于从该网站收集星表的网络抓取过程的单独文章。暂时,我将创建一个字典,我们以后可以将它变成一个星表。

我们还需要记住,每颗星都应该有一个外键来引用星系表中的一行。不过Little Astronomy并没有提供每颗恒星的星系信息,所以我得查一下 这个网站 .不要忘记包括 星号 列也是如此。

我们可以添加一个 星号 现在我们已经(几乎)完成了星表的列到行星表。稍后,我们还将替换 星系 此星表中的列与 星系ID .

创建行星表(最终)

创建星座表(最终)

同样的程序也可以应用到星座表中,用每个星星的 id 替换星星列。

创建最后一个表:galaxy table (final)

我们现在将继续使用与以前相同的网络抓取方法来创建下表,即星系表。

该表共包含 37 个星系。此外,它还包含一个星座列。因此,为了简单起见,我只想在表格中保留一些星系的名称。我将只使用上一个星座表中列出的星座的星系名称来实现这一点。

我将使用肉眼可见的星系细节 这个网站 再创建一列。如果可以用肉眼看到一个星系,则将其设置为 True;否则,它将被设置为 False。我这样做是因为在这个数据库中至少有两列必须使用 BOOLEAN 数据类型。为了满足要求,让我们在这个galaxy 表中添加一列,因为我们已经在planet 表中有一个列。

现在是时候添加星系的 id 并替换 星座 列及其 ID 号。

创建星表(最终)

您可能还想返回查看星表,以确保我们表上的每颗星都属于银河系。根据银河表,它的 ID 号是 11。因此,我们可以简单地删除之前的星系列,并添加一个带有银河系 id 的新列。

 df_star['galaxy_id'] = [11] * len(df_star)  
 df_star = df_star.drop(columns='galaxy')  
 df_star

我相信工作已经完成。现在有五张关于月球、行星、恒星、星系和星座的表格。我们已遵守所有要求。下面是我们构建的每张桌子的图片。

moon table (there are actually 50 rows)

planet table

star table

galaxy table

constellation table

自然地,我们可以开始编写 SQL 命令,因为这样做的主要目的是编译表,以便我们可以使用 PostgreSQL 构建天体数据库。但是,我不会写一篇关于它的文章,而是会继续写下去 我的 GitHub .因此,请随时查看 我的 GitHub 如果你需要任何关于如何去做的想法。

谢谢阅读!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/37410/19381802

标签:df,数据库,表中,我们,准备,星座,行星,constellation,天体
From: https://www.cnblogs.com/amboke/p/16704089.html

相关文章

  • 数据库MySQL
    主要语句一、数据库--创建数据库CREATEDATABASEdemo;--删除数据库DROPDATABASEdemo;--查看数据库SHOWDATABASES;--创建数据表CREATETABLEdemo.test(字段名类......
  • Sql Server 查询数据库,所有表,列,类型
    1--查询所有表2selectSysobjects.NamefromSysObjects34--查询所有类型5selectSysTypes.NamefromSysTypes67--查询所有列8selectSy......
  • 异常和数据库事务的几个容易出错的地方
    https://blog.csdn.net/csdnsevenn/article/details/84645568?utm_source=tuicool&utm_medium=referral我们在开发企业应用时,由于数据操作在顺序执行的过程中,线上可能有各......
  • LFS(Linux From Scratch)构建过程全记录(四):最后的准备
    写在前面本章将进行一系列的环境配置 在LFS中创建文件目录我们可以用以下的指令来创建一些基础的目录,并进行连接mkdir-pv$LFS/{etc,var}$LFS/usr/{bin,lib,sbin}......
  • MySQL教程 - 优化数据库
    更新记录转载请注明出处。2022年9月10日发布。2022年9月10日从笔记迁移到博客。优化数据库查看用户使用情况SHOWPROCESSLIST;杀连接进程killuserId;......
  • 数据库原理:数据模型和关系数据库
    目录数据模型数据模型的分类数据模型的组成要素常用的数据模型层次模型网状结构关系模型关系模型概念笛卡尔积码的概念关系的概念关系模式关系操作关系完整性实体完整性参......
  • 将Oracle数据库迁移到达梦数据库
    公司某产品在项目现场上常用到的数据库为Oracle和达梦。做性能测试需要根据项目现场预埋大量的基础数据和业务数据,耗费时间、精力。故完成Oracle数据库的性能测试......
  • 数据库学习笔记 (本数据库学习笔记以SQL sever 2019 为例进行学习) 20220906 第五节课
    通过一个表,抽象出表的关系模式:列是同质:即每一列中的分量来自同一域,是同一类型的数据列位置互换性:区分一列是靠列名行位置互换性:区分哪一行是靠某一或某几列的值(关键字......
  • 数据库三大范式通俗理解
    第一范式(1NF):字段不可分;第二范式(2NF):有主键,非主键字段依赖主键;第三范式(3NF):非主键字段不能相互依赖 https://baijiahao.baidu.com/s?id=1703973144064369296 ......
  • 3. mysql--Navicat进行ssh通道连接MySQL数据库
    1.Navicat进行ssh通道连接MySQL数据库首先,你得有一个Navicat,这个不用多说第二步,打开Navicat点击连接按钮。这个就不上图了,直接到如下页面填写信息,连接名随便起第三步:点......