购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4
从文件中读取数据

使用Python进行数据分析,往往会从各类文件中读取数据,本节我们介绍使用Python从各类文件中读取数据的方法。注意,在介绍读取文件的程序时,使用了Python的数据分析相关库,如NumPy、Pandas等,这些库会在后续章节中详细介绍,本节读者只需了解如何在程序中使用它们即可。

1.4.1 Python读取CSV文件

有时候数据是以CSV形式存储的,要处理数据需要先进行读取操作。以下为CSV文件的读取方法(基于Python)。

1.利用NumPy读取

利用NumPy读取CSV文件的代码如下:

    # 导入numpy库,并简写为np
    import numpy as np
    # 从指定路径的CSV文件中读取数据,使用逗号作为分隔符,跳过前n行,仅读取第2列和第3列的数
据,并将结果存储在变量data中
    data = np.loadtxt(open("路径.csv", "rb"), delimiter=",", skiprows=n, usecols=[2,
3])

其中,delimiter是分隔符;skiprows是跳过前n行;usecols是读取的列数,例子中读取的是第3、第4列。

2.利用Pandas读取

利用Pandas读取CSV文件的代码如下:

    # 导入pandas库,并简写为pd
    import pandas as pd
    # 读取CSV文件,指定分隔符为逗号,自动推断表头,仅使用第6列数据其中:sep相当于delimiter,
是分隔符,而这个函数中也包含分隔符,它属于备用的分隔符(csv用不同的分隔符分隔数据),header是
列名,是每一列的名字,如果header=1,将会以第二行作为列名,读取第二行以下的数据,usecols是读
取第几列。
    data = pd.read_csv(r'C:\Users\lenovo\Desktop\parttest.csv', sep=',',
header='infer', usecols=[5])

其中,sep相当于delimiter,是分隔符,而这个函数中也包含分隔符,它属于备用的分隔符(csv用不同的分隔符分隔数据),header是列名,是每一列的名字,如果header=1,将会以第二行作为列名,读取第二行以下的数据,usecols是读取第几列。

值得注意的是,如果我们查看某个值,使用print(data[1])是会报错的。如果想要读取全部数据,则可以使用如下代码:

    array=data.values[0::,0::] # 读取全部行、全部列
    print(array[])               # array是数组形式存储,顺序与data读取的数据顺序格式相同
3.利用Python I/O读取

利用Python I/O读取CSV文件的代码如下:

    import csv
    filename='C:\\Users\\lenovo\\Desktop\\parttest.csv'
    data = []
    with open(filename) as csvfile:
        csv_reader = csv.reader(csvfile)           # 使用csv.reader读取csvfile中的文件
        header = next(csv_reader)                  # 读取第一行每一列的标题
        for row in csv_reader:                     # 将csv 文件中的数据保存到data中
            data.append(row[5])                    # 选择某一列加入data数组中
        print(data)

或者使用DictReader,即第一行作为标签,代码如下:

    import csv
    with open(filename) as csvfile:
        reader = csv.DictReader(csvfile)
        column = [row['weight'] for row in reader]  # weight 同列的数据
    print(column)

1.4.2 Python读取JSON文件

JSON(JavaScript Object Notation,Java Script对象表示法)是一种轻量级的数据交换格式,是基于ECMAScript的一个子集。使用Python操作JSON文件,主要有两种方法:一是load()方法,用于读取JSON文件;二是dump()方法,用于写入JSON文件。

1.读取

读取JSON文件的代码如下:

    import json  # 导入json模块
    with open('results_font.json', 'r', encoding='utf-8') as f:  # 以只读模式打开名
为'results_font.json'的文件,编码为'utf-8'
        a = json.load(f)  # 使用json模块的load函数将文件内容解析为Python对象,并将结果
赋值给变量a

或者使用load()方法,代码如下:

    import mmcv  # 导入mmcv库
    # 使用mmcv库的load函数加载名为'result.json'的文件,并将结果赋值给变量a
    a = mmcv.load('result.json')
2.写入

写入JSON文件的代码如下:

    # 定义一个字典a,包含姓名、ID和爱好信息
    a = {
        "name": "dabao",
        "id": 123,
        "hobby": {
            "sport": "basketball",
            "book": "python study"
        }
    }
 
    # 将字典a转换为JSON格式的字符串
    b = json.dumps(a)
 
    # 打开一个名为'new_json.json'的文件,以写入模式
    f2 = open('new_json.json', 'w')
 
    # 将JSON格式的字符串写入文件
    f2.write(b)
 
    # 关闭文件
    f2.close()

1.4.3 Python读取数据库文件

Python也可以读取数据库中储存的数据,下面将以Python读取MySQL数据库中的数据为例,向读者进行介绍。

首先安装读取MySQL的第三方库PyMySQL,命令如下:

    pip install pymysql

安装成功后,传入一个.py文件,代码如下:

    import pymysql
    #连接数据库
    link=pymysql.connect(
    host = '127.0.0.1'            # 连接本地默认地址,127.0.0.1
    ,user = 'root'                # 用户名
    ,passwd='******'              # 密码
    ,port= 3306                   # 端口,默认为3306
    ,db='studentdb'               # 数据库名称
    ,charset='utf8'               # 字符编码
    )
    cur = link.cursor()           # 生成游标对象
    sql="SELECT * FROM Student "  # 写SQL语句
    cur.execute(sql)              # 执行SQL语句
    data = cur.fetchall()         # 通过fetchall方法获得数据
    for i in data:                # 循环遍历拿到数据
        print (i)
    cur.close()                   # 关闭游标
    link.close()                  # 关闭连接

读取到的数据内容如图1.1所示。

图1.1 读取到的数据内容

存储在数据库中的表文件如图1.2所示。

图1.2 存储在数据库中的表文件

1.4.4 Python保存数据文件

一般保存数据的方式有如下几种:

● 文件:TXT、CSV、Excel、JSON等,保存的数据量小。

● 关系型数据库:MySQL、Oracle等,保存的数据量大。

● 非关系型数据库:MongoDB、Redis等,以键值对形式存储数据,保存数据量大。

● 二进制文件:保存爬取的图片、视频、音频等格式数据。

保存数据的方法主要有以下几种:

(1)使用open()方法写入文件。

(2)保存数据到文件,写入列表或者元组数据:创建writer对象,使用writerow()方法写入一行数据,使用writerows()方法写入多行数据。写入字典数据:创建DictWriter对象,使用writerow()方法写入一行数据,使用writerows()方法写入多行数据。

(3)使用Pandas保存数据。Pandas支持多种文件格式的读写,最常用的就是CSV和Excel数据的操作。因为直接读取的数据是数据框格式,所以Pandas在爬虫、数据分析中使用非常广泛。一般将爬取到的数据存储为DataFrame对象(DataFrame是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量)。

(4)保存到数据库。首先以二进制方打开文件,然后读取文件,把读取的二进制内容保存到数据库中。

首先,需要安装pymysql库,可以使用以下命令安装:

    pip install pymysql

然后,使用以下代码将读取的内容保存到MySQL数据库中:

    import pymysql
 
    # 连接到MySQL数据库
    conn = pymysql.connect(host='localhost', user='your_username',
password='your_password', db='your_database', charset='utf8')
    cursor = conn.cursor()
 
    # 读取文件内容
    with open(filePath[0], 'rb') as f:
        ss = f.read()
 
    # 将文件内容插入数据库中
    sql = "INSERT INTO your_table (column_name) VALUES (%s)"
    cursor.execute(sql, (ss,))
    conn.commit()
 
    # 关闭数据库连接
    cursor.close()
    conn.close()

在实际操作中,请将your_username、your_password、your_database、your_table和column_name替换为实际的数据库信息。 hvNHtTFvsYiWQXqNzPLZDJ8AB0xAaDYViqjzbaa52qXenCGKfhHppidQHGhhl9mA

点击中间区域
呼出菜单
上一章
目录
下一章
×