Python中的pandas表格模块、文件模块和数据库模块

  • Post category:Python

我来为您讲解一下Python中的pandas表格模块、文件模块和数据库模块的完整实例教程。

1. pandas表格模块

pandas是一种能支持多种数据源读写、数据清洗、数据加工、数据统计等功能的Python表格处理工具。可以用pandas模块创建和修改表格、导入和导出各种数据文件。以下是pandas表格模块的一些简单用法以及一条详细示例说明。

表格数据的创建和修改

可以通过使用pandas模块创建和修改表格数据,要创建一个pandas表格,我们可以使用pandas的DataFrame类。

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]})
print(df)

# 添加一列"D"
df["D"] = [10, 11, 12]
print(df)

# 修改一行数据
df.loc[1, "B"] = 20
print(df)

这段代码创建了一个3行3列的表格,并添加了一列数据”D”,最后修改了表格中第2行第2列数据。输出的结果如下:

   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

   A  B  C   D
0  1  4  7  10
1  2  5  8  11
2  3  6  9  12

   A   B  C   D
0  1   4  7  10
1  2  20  8  11
2  3   6  9  12

示例说明

以下是一个使用pandas表格模块的详细示例,假设我们有一份2019年1月至12月的销售记录,现在需要分析这12个月的销售数据,以及比较每个月的销售情况。销售记录的数据存储在一个csv文件sales.csv中,下面是该文件的示例数据:

date,product,price,quantity
2019-01-01,apple,5,10
2019-01-01,banana,3,20
2019-01-02,apple,5,20
2019-01-03,orange,4,30
...

首先,我们需要使用pandas从文件中读入数据,并创建一个DataFrame对象:

import pandas as pd

# 从csv文件中读入数据
df = pd.read_csv("sales.csv")
print(df.head())

# 添加一列"month"
df["month"] = pd.to_datetime(df["date"]).dt.month
print(df.head())

这段代码首先使用pandas的read_csv()函数读入文件,读入的数据存储在DataFrame对象df中。然后将”date”一列转换为日期格式,并取出其月份信息存储在新的一列”month”中。输出的结果如下:

         date product  price  quantity
0  2019-01-01   apple      5        10
1  2019-01-01  banana      3        20
2  2019-01-02   apple      5        20
3  2019-01-03  orange      4        30
4  2019-01-03   apple      5        40

         date product  price  quantity  month
0  2019-01-01   apple      5        10      1
1  2019-01-01  banana      3        20      1
2  2019-01-02   apple      5        20      1
3  2019-01-03  orange      4        30      1
4  2019-01-03   apple      5        40      1

我们可以通过pandas的groupby()函数按照月份对销售数据进行统计和分组:

# 按月份统计销售数据
monthly_sales = df.groupby("month").agg({"quantity": "sum", "price": "mean"})
print(monthly_sales)

这段代码将销售数据按月份分组,累加每个月份的销售总量,并统计每个月份的平均单价。输出的结果如下:

       quantity      price
month                     
1           672   5.000000
2           823   6.400000
3          1148   6.777778
4           901   6.250000
5           798   6.142857
6           870   6.285714
7           945   6.125000
8           821   6.071429
9           986   5.363636
10         1090   5.333333
11         1291   5.538462
12          698  11.000000

2. 文件模块

Python中的文件模块包括了读写文本文件、读写JSON文件、读写XML文件等多种功能。以下是文件模块的一些简单用法以及一条详细示例说明。

读写文本文件

可以使用Python的内置open()函数来读写文本文件,可以指定文件名、文件路径、打开方式等参数。下面是一个简单的示例,从文件中读取数据并输出到控制台。

# 从文件中读取数据
with open("data.txt", "r") as f:
    data = f.read()

# 输出数据到控制台
print(data)

这段代码使用了Python的with语句,自动关闭文件句柄,避免忘记关闭文件句柄导致的问题。要注意的是,如果读写文本文件时需要指定编码格式,例如:

# 从UTF-8编码格式的文件中读取数据
with open("data.txt", "r", encoding="utf-8") as f:
    data = f.read()

示例说明

以下是一个使用文件模块的详细示例,假设我们有一个文本文件data.txt,其中存储了一些英文文章。现在需要读取这些文章,并统计每个单词出现的次数。为了实现这个功能,我们需要进行以下步骤。

  1. 读取整个文件的内容。
  2. 将文件内容按照单词拆分,去除标点符号和换行符等无用字符,只保留英文字母和数字。
  3. 统计每个单词出现的次数,并按照出现次数从高到低进行排序。
  4. 输出统计结果。

下面是示例代码:

import re

# 读取文件内容
with open("data.txt", "r") as f:
    content = f.read()

# 拆分单词
words = re.findall(r'\b\w+\b', content.lower())

# 统计单词出现频率
word_count = {}
for word in words:
    if word not in word_count:
        word_count[word] = 0
    word_count[word] += 1

# 按照出现频率排序
sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)

# 输出结果
for word, count in sorted_words:
    print(word, count)

这段代码将文件中的文章读取出来,并使用正则表达式将内容按照单词拆分。然后统计每个单词出现的频率,并按照出现频率从高到低进行排序。最后将统计结果输出到控制台。输出结果如下:

the 876
of 454
and 437
to 435
in 303
a 248
that 203
was 200
he 182
as 155
...

3. 数据库模块

Python中的数据库模块能够支持对多种数据库进行连接、读写、查询等操作,例如MySQL、Oracle、SQLite等。以下是数据库模块的一些简单用法以及一条详细示例说明。

连接数据库

以MySQL数据库为例,需要使用Python的mysql-connector模块来连接数据库。首先需要安装mysql-connector模块,可以使用pip命令进行安装:

pip install mysql-connector-python

然后就可以使用该模块来连接MySQL数据库:

import mysql.connector

# 连接MySQL数据库
cnx = mysql.connector.connect(
    user='username',
    password='password',
    host='localhost',
    database='test'
)

# 关闭连接
cnx.close()

这段代码使用mysql.connector.connect()函数来连接MySQL数据库,需要提供MySQL的登录信息以及要连接的数据库名称。连接成功后,可以通过cnx.cursor()方法获取一个游标对象,并使用该游标对象执行SQL查询、插入、更新等操作。

示例说明

以下是一个使用数据库模块的详细示例,假设我们有一个MySQL数据库test,其中包含一个表students,其中存储了一些学生信息。现在需要查询出其中所有身高高于1.7米的学生信息,并输出到控制台。为了实现这个功能,我们需要进行以下步骤。

  1. 连接MySQL数据库,并获取到一个游标对象。
  2. 执行SQL查询语句,查询出身高高于1.7米的学生信息。
  3. 读取查询结果,并输出到控制台。
  4. 关闭游标,并断开MySQL数据库的连接。

以下是示例代码:

import mysql.connector

# 连接MySQL数据库
cnx = mysql.connector.connect(
    user='username',
    password='password',
    host='localhost',
    database='test'
)

# 查询身高高于1.7米的学生信息
query = ("SELECT name, age, height FROM students WHERE height > 1.7")
cursor = cnx.cursor()
cursor.execute(query)

# 读取查询结果
for (name, age, height) in cursor:
    print(f"{name}, {age}, {height}")

# 关闭游标和连接
cursor.close()
cnx.close()

这段代码使用mysql.connector模块连接MySQL数据库,然后执行一个SQL查询语句,查询出身高高于1.7米的学生信息。查询结果返回多个元组,每个元组包含一些字段或列的数据。这里我们使用了Python的f-string语法来输出结果。最后关闭游标和连接。

输出结果如下:

张三, 20, 1.75
李四, 21, 1.80
王五, 19, 1.73
赵六, 22, 1.78

以上就是Python中的pandas表格模块、文件模块和数据库模块的详细讲解和示例说明。