当前位置: 首页 > 后端技术 > Python

数据处理【瑞士军刀Pandas指南】:一、数据创建与读写

时间:2023-03-26 13:05:59 Python

参考来源:Vitu.AI数据创建与读写指南任何数据分析项目的第一步可能都是从文件中读取数据,所以我们需要先考虑这个。在本节中,我们将完成有关创建pandasSeries和DataFrame对象的练习。官方pandas文档的IO工具部分提供了有关此主题的全面概述。首先,让我们导入pandas库importpandasaspd来创建数据。pandas中有两个核心:对象:DataFrame和Series。DataFrame是一个表。它包含一系列单独的条目,每个条目都有特定的值。每个条目对应一行(或记录)和一列。例如,考虑以下简单的DataFrame:pd.DataFrame({'Yes':[50,21],'No':[131,2]})在此示例中,“0,No”条目的值为131.“0,是”条目的值为50,依此类推。DataFrame条目不限于整数。例如,这里有一个值为str字符串的DataFrame:pd.DataFrame({'Bob':['Ilikedit.','Itwasawful.'],'Sue':['Prettygood.','Bland.']})我们使用pd.DataFrame构造函数来生成这些DataFrame对象。创建新对象的语法是初始化一个字典,其键是列名(本例中为Bob和Sue),其值是条目列表。这是构建新DataFrame的标准方法,也是您最有可能遇到的方法。字典列表的构造函数为列标签赋值,但仅对行标签使用递增计数0(0,1,2,3,...)。有时这很好,但通常我们会想自己分配这些行标签。DataFrame中使用的行标签列表称为索引。我们可以在构造函数中使用index参数对其进行赋值:Bland.']},index=['ProductA','ProductB'])相反,Series是一系列数据值。如果DataFrame是一个表,Series就是一个列表。事实上,您可以只使用一个列表创建一个系列:pd.Series([1,2,3,4,5])一个系列本质上是DataFrame的单个列。因此,你可以像之前一样使用index参数给一个Series赋列值。但是,Series没有列名,它只有一个整体名称:pd.Series([30,35,40],index=['2015Sales','2016Sales','2017Sales'],name='ProductA')Series和DataFrame密切相关。将DataFrame视为实际上只是一堆“粘在一起”的系列是有帮助的。我们将在本教程的下一部分中看到更多内容。读取普通文件csv非常方便,可以手动创建DataFrame和Series。然而,在大多数情况下,我们实际上不会手动创建自己的数据,我们会使用已经存在的数据。数据可以以许多不同的形式和格式存储。到目前为止,其中最基本的是简单的CSV文件。当您打开CSV文件时,您将看到如下内容:csvProductA,ProductB,ProductC,30,21,9,35,34,1,41,11,11CSV文件现在是一个逗号分隔的表格让我们把我们的玩具数据集放在一边,看看当我们将它读入DataFrame时真实的数据集是什么样子的。在此示例中,我们将查看澳大利亚墨尔本的房价数据。单击此处下载数据集。我们将csv文件上传到Vitu的数据集空间。我们将使用read_csv函数将数据读入DataFrame。这样做:melbourne_data=pd.read_csv('melb_data.csv')我们可以使用shape属性来检查生成的DataFrame的大小:melbourne_data.shape所以我们的新DataFrame有13k+条记录,分为21个不同的列。我们可以使用head命令检查生成的DataFrame的内容,它获取前五行:melbourne_data.head()pandasread_csv函数功能丰富,可以指定30多个可选参数。例如,你可以在创建数据集时使用csv文件的某一列作为内置索引,但pandas默认不会自动获取。要让pandas使用该列作为索引(而不是从头开始创建新索引),我们可以指定并使用index_col。melbourne_data=pd.read_csv('melb_data.csv',index_col=0)melbourne_data.head()读取普通文件excel下面再看看大家可能会遇到的更多数据类型。首先是古老的Excel电子表格。Excel文件(XLS或XLST)将自身组织为一系列命名的工作表。每个Sheet基本上都是一个表单。因此,要将数据加载到pandas中,我们需要一个额外的参数:感兴趣的工作表的名称。点此下载数据集,并在本地打开如下。然后我们把xls文件上传到vitu的数据集空间,用pandasread_excel读取:wic=pd.read_excel("WICAgencies2013ytd.xls",sheet_name='TotalWomen')wic.head()在这个可以看到例如,Excel文件的格式通常不像CSV文件。电子表格允许(并鼓励)创建人类可读但机器不可读的注释和字段。所以在我们可以使用这个特定的数据集之前,我们需要稍微清理一下。我们将在下一节中看到如何做到这一点。sqlite读取常见文件现在,让我们转向另一种常见的数据格式:sqlite。点击此处下载sqlite数据集。我们将sqlite文件上传到Vitu的数据集空间。连接到SQL数据库比读取Excel文件需要更多的思考。首先,您需要创建一个连接器pandas不会自动为您执行此操作,因为有许多不同类型的SQL数据库,每个都有自己的连接器。因此,对于SQLite数据库(Vitu唯一支持的类型),您需要首先执行以下操作(使用Python自带的sqlite3库):importsqlite3conn=sqlite3.connect("Salaries.sqlite")您需要做的另一件事是编写SQL语句。在内部,SQL数据库的运行方式完全不同。然而,在外部,它们都提供相同的API,“结构化查询语言”(或简称SQL...)。因此,事不宜迟,以下是来自SQLite的数据库中有多少表。datasalaries=pd.read_sql_query("SELECT*FROMSalaries",conn)conn.close()salaries.head()如何写入普通文件将数据写入文件通常比从一个文件读取数据更容易,因为pandas会处理转换的麻烦。我们将再次使用CSV文件。read_csv(读取我们的数据)的对立面是to_csv,写入它。使用CSV文件很简单:melbourne_data.head().to_csv('melb_data_head.csv')要写回Excel文件,您需要再次使用to_excel和sheet_name:wic.head().to_excel('wic_head.xls',sheet_name='TotalWomen')最后,要写入SQLite数据库,我们需要提供我们输入数据的数据库中表的名称,以及连接器:conn=sqlite3.connect("salaries_head.sqlite")salaries.head().to_sql("salaries",conn)conn.close()无痛完成读写!原文地址:数据处理【瑞士军刀pandas攻略】:1.数据创建与读写