Python中八种数据导入方法 心已赠人 2024-03-31 11:56 9阅读 0赞 ### 一、文本文件 ### #### 1、纯文本文件 #### <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> </td> <td> <p><code>filename </code><code>=</code> <code>'demo.txt'</code></p> <p><code>file</code> <code>=</code> <code>open</code><code>(filename, mode</code><code>=</code><code>'r'</code><code>) </code><code># 打开文件进行读取</code></p> <p><code>text </code><code>=</code> <code>file</code><code>.read() </code><code># 读取文件的内容</code></p> <p><code>print</code><code>(</code><code>file</code><code>.closed) </code><code># 检查文件是否关闭</code></p> <p><code>file</code><code>.close() </code><code># 关闭文件</code></p> <p><code>print</code><code>(text)</code></p> </td> </tr> </tbody> </table> **使用上下文管理器** \-- `with` <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> </td> <td> <p><code>with </code><code>open</code><code>(</code><code>'demo.txt'</code><code>, </code><code>'r'</code><code>) as </code><code>file</code><code>:</code></p> <p><code> </code><code>print</code><code>(</code><code>file</code><code>.readline()) </code><code># 一行一行读取</code></p> <p><code> </code><code>print</code><code>(</code><code>file</code><code>.readline())</code></p> <p><code> </code><code>print</code><code>(</code><code>file</code><code>.readline())</code></p> </td> </tr> </tbody> </table> #### 2、表格数据:Flat文件 #### **使用 Numpy 读取 Flat 文件** **Numpy** 内置函数处理数据的速度是 **C** 语言级别的。 **Flat** 文件是一种包含没有相对关系结构的记录的文件。(支持**Excel、CSV和Tab**分割符文件 ) 1.具有一种数据类型的文件 用于分隔值的字符串跳过前两行。在第一列和第三列读取结果数组的类型。 <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> </td> <td> <p><code>filename </code><code>=</code> <code>'mnist.txt'</code></p> <p><code>data </code><code>=</code> <code>np.loadtxt(filename,</code></p> <p><code> </code><code>delimiter</code><code>=</code><code>','</code><code>,</code></p> <p><code> </code><code>skiprows</code><code>=</code><code>2</code><code>,</code></p> <p><code> </code><code>usecols</code><code>=</code><code>[</code><code>0</code><code>,</code><code>2</code><code>],</code></p> <p><code> </code><code>dtype</code><code>=</code><code>str</code><code>)</code></p> </td> </tr> </tbody> </table> 2.具有混合数据类型的文件 **两个硬的要求:** * **跳过表头信息** * **区分横纵坐标** <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> </td> <td> <p><code>filename </code><code>=</code> <code>'titanic.csv'</code></p> <p><code>data </code><code>=</code> <code>np.genfromtxt(filename,</code></p> <p><code> </code><code>delimiter</code><code>=</code><code>','</code><code>,</code></p> <p><code> </code><code>names</code><code>=</code><code>True</code><code>,</code></p> <p><code> </code><code>dtype</code><code>=</code><code>None</code><code>)</code></p> </td> </tr> </tbody> </table> **使用 Pandas 读取Flat文件** <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> </td> <td> <p><code>filename </code><code>=</code> <code>'demo.csv'</code> </p> <p><code>data </code><code>=</code> <code>pd.read_csv(filename, </code></p> <p><code> </code><code>nrows</code><code>=</code><code>5</code><code>, </code><code># 要读取的文件的行数</code></p> <p><code> </code><code>header</code><code>=</code><code>None</code><code>, </code><code># 作为列名的行号</code></p> <p><code> </code><code>sep</code><code>=</code><code>'\t'</code><code>, </code><code># 分隔符使用</code></p> <p><code> </code><code>comment</code><code>=</code><code>'#'</code><code>, # 分隔注释的字符</code></p> <p><code> </code><code>na_values</code><code>=</code><code>[""]) </code><code># 可以识别为NA/NaN的字符串</code></p> </td> </tr> </tbody> </table> ### 二、Excel 电子表格 ### **Pandas**中的`ExcelFile()`是**pandas**中对**excel**表格文件进行读取相关操作非常方便快捷的类,尤其是在对含有多个**sheet**的**excel**文件进行操控时非常方便。 <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> <p>7</p> <p>8</p> <p>9</p> <p>10</p> <p>11</p> </td> <td> <p><code>file</code> <code>=</code> <code>'demo.xlsx'</code></p> <p><code>data </code><code>=</code> <code>pd.ExcelFile(</code><code>file</code><code>)</code></p> <p><code>df_sheet2 </code><code>=</code> <code>data.parse(sheet_name</code><code>=</code><code>'1960-1966'</code><code>,</code></p> <p><code> </code><code>skiprows</code><code>=</code><code>[</code><code>0</code><code>],</code></p> <p><code> </code><code>names</code><code>=</code><code>[</code><code>'Country'</code><code>,</code></p> <p><code> </code><code>'AAM: War(2002)'</code><code>])</code></p> <p><code>df_sheet1 </code><code>=</code> <code>pd.read_excel(data,</code></p> <p><code> </code><code>sheet_name</code><code>=</code><code>0</code><code>,</code></p> <p><code> </code><code>parse_cols</code><code>=</code><code>[</code><code>0</code><code>],</code></p> <p><code> </code><code>skiprows</code><code>=</code><code>[</code><code>0</code><code>],</code></p> <p><code> </code><code>names</code><code>=</code><code>[</code><code>'Country'</code><code>])</code></p> </td> </tr> </tbody> </table> 使用`sheet_names`属性获取要读取工作表的名称。 <table> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>data.sheet_names</code></p> </td> </tr> </tbody> </table> ### 三、SAS 文件 ### SAS (Statistical Analysis System)是一个模块化、集成化的大型应用软件系统。其保存的文件即sas是统计分析文件。 <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> </td> <td> <p><code>from</code> <code>sas7bdat </code><code>import</code> <code>SAS7BDAT</code></p> <p><code>with SAS7BDAT(</code><code>'demo.sas7bdat'</code><code>) as </code><code>file</code><code>:</code></p> <p><code> </code><code>df_sas </code><code>=</code> <code>file</code><code>.to_data_frame()</code></p> </td> </tr> </tbody> </table> ### 四、Stata 文件 ### Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。其保存的文件后缀名为`.dta`的Stata文件。 <table> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>data </code><code>=</code> <code>pd.read_stata(</code><code>'demo.dta'</code><code>)</code></p> </td> </tr> </tbody> </table> ### 五、Pickled 文件 ### python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化。python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。 <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> </td> <td> <p><code>import</code> <code>pickle</code></p> <p><code>with </code><code>open</code><code>(</code><code>'pickled_demo.pkl'</code><code>, </code><code>'rb'</code><code>) as </code><code>file</code><code>:</code></p> <p><code> </code><code>pickled_data </code><code>=</code> <code>pickle.load(</code><code>file</code><code>) </code><code># 下载被打开被读取到的数据</code></p> </td> </tr> </tbody> </table> 与其相对应的操作是写入方法`pickle.dump()` 。 ### 六、HDF5 文件 ### HDF5文件是一种常见的跨平台数据储存文件,可以存储不同类型的图像和数码数据,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。 HDF5 文件一般以 `.h5` 或者 `.hdf5` 作为后缀名,需要专门的软件才能打开预览文件的内容。 <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> </td> <td> <p><code>import</code> <code>h5py</code></p> <p><code>filename </code><code>=</code> <code>'H-H1_LOSC_4_v1-815411200-4096.hdf5'</code></p> <p><code>data </code><code>=</code> <code>h5py.</code><code>File</code><code>(filename, </code><code>'r'</code><code>)</code></p> </td> </tr> </tbody> </table> ### 七、Matlab 文件 ### 其由matlab将其工作区间里的数据存储的后缀为`.mat`的文件。 <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> </td> <td> <p><code>import</code> <code>scipy.io</code></p> <p><code>filename </code><code>=</code> <code>'workspace.mat'</code></p> <p><code>mat </code><code>=</code> <code>scipy.io.loadmat(filename)</code></p> </td> </tr> </tbody> </table> ### 八、关系型数据库 ### <table> <tbody> <tr> <td> <p>1</p> <p>2</p> </td> <td> <p><code>from</code> <code>sqlalchemy </code><code>import</code> <code>create_engine</code></p> <p><code>engine </code><code>=</code> <code>create_engine(</code><code>'sqlite://Northwind.sqlite'</code><code>)</code></p> </td> </tr> </tbody> </table> 使用`table_names()`方法获取一个表名列表 <table> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>table_names </code><code>=</code> <code>engine.table_names()</code></p> </td> </tr> </tbody> </table> #### 1、直接查询关系型数据库 #### <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> </td> <td> <p><code>con </code><code>=</code> <code>engine.connect()</code></p> <p><code>rs </code><code>=</code> <code>con.execute(</code><code>"SELECT * FROM Orders"</code><code>)</code></p> <p><code>df </code><code>=</code> <code>pd.DataFrame(rs.fetchall())</code></p> <p><code>df.columns </code><code>=</code> <code>rs.keys()</code></p> <p><code>con.close()</code></p> </td> </tr> </tbody> </table> **使用上下文管理器** \-- `with` <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> </td> <td> <p><code>with engine.connect() as con:</code></p> <p><code> </code><code>rs </code><code>=</code> <code>con.execute(</code><code>"SELECT OrderID FROM Orders"</code><code>)</code></p> <p><code> </code><code>df </code><code>=</code> <code>pd.DataFrame(rs.fetchmany(size</code><code>=</code><code>5</code><code>))</code></p> <p><code> </code><code>df.columns </code><code>=</code> <code>rs.keys()</code></p> </td> </tr> </tbody> </table> #### 2、使用Pandas查询关系型数据库 #### <table> <tbody> <tr> <td> <p>1</p> </td> <td> <p><code>df </code><code>=</code> <code>pd.read_sql_query(</code><code>"SELECT * FROM Orders"</code><code>, engine)</code></p> </td> </tr> </tbody> </table> ### 数据探索 ### 数据导入后会对数据进行初步探索,如查看数据类型,数据大小、长度等一些基本信息。这里简单总结一些。 #### 1、NumPy Arrays #### <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> </td> <td> <p><code>data_array.dtype </code><code># 数组元素的数据类型</code></p> <p><code>data_array.shape </code><code># 阵列尺寸</code></p> <p><code>len</code><code>(data_array) </code><code># 数组的长度</code></p> </td> </tr> </tbody> </table> #### 2、Pandas DataFrames #### <table> <tbody> <tr> <td> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p> <p>6</p> </td> <td> <p><code>df.head() </code><code># 返回DataFrames前几行(默认5行)</code></p> <p><code>df.tail() </code><code># 返回DataFrames最后几行(默认5行)</code></p> <p><code>df.index </code><code># 返回DataFrames索引</code></p> <p><code>df.columns </code><code># 返回DataFrames列名</code></p> <p><code>df.info() </code><code># 返回DataFrames基本信息</code></p> <p><code>data_array </code><code>=</code> <code>data.values </code><code># 将DataFrames转换为NumPy数组</code></p> </td> </tr> </tbody> </table> 以上就是Python中八种数据导入方法总结的详细内容,希望可以对你有所帮助。 转自:[https://www.weidianyuedu.com][https_www.weidianyuedu.com] [https_www.weidianyuedu.com]: https://www.weidianyuedu.com
还没有评论,来说两句吧...