Python使用sqlite3模块内置数据库

介绍

Python是一种高级语言,它可以用于许多不同的任务,例如网络编程、Web开发和数据分析等。在数据分析方面,Python有很多特色模块和库,其中包括一个内置的数据库模块——sqlite3。sqlite3是一种轻型数据库,非常适合Python学习者和许多小型项目。

sqlite3模块的基础

在Python中使用sqlite3,我们需要导入sqlite3模块,同时打开一个连接,创建一个游标对象来执行查询:

import sqlite3

# 连接数据库文件,如果不存在则创建一个新的

conn = sqlite3.connect('example.db')

# 创建游标对象

c = conn.cursor()

创建表

在SQLite中,我们需要首先创建一个表来储存数据,可以使用CREATE TABLE语句完成:

# 创建一个表

c.execute('''CREATE TABLE stocks (date text, symbol text, price real)''')

这条语句创建了一个名为stocks的表,它有三列:date、symbol和price,分别为文本型、文本型和实数型。现在,我们可以使用INSERT语句将数据添加到表中:

# 添加数据到表中

c.execute("INSERT INTO stocks VALUES ('2021-10-27', 'AAPL', 148.9)")

查询数据

要从SQLite数据库中获取数据,我们需要使用SELECT语句,可以将结果存储在一个变量中:

# 获取所有行

c.execute('SELECT * FROM stocks')

rows = c.fetchall()

这行代码返回了所有行的结果,我们可以使用循环遍历它。下面的代码打印了每行的内容:

# 打印结果

for row in rows:

print(row)

使用sqlite3模块进行数据分析

sqlite3模块可以被用于一些简单的数据分析。在这个例子中,我们将使用sqlite3模块来读取一个文本文件,并且统计每个单词在文件中出现的次数。

数据收集

我们需要一个文本文件来进行模拟。在本例中,我们将使用一段很小的文字来进行操作。该文本可以是以下任何一个(或者使用类似的段落):

Python is a widely used high-level programming language for

general-purpose programming, created by Guido van Rossum and

first released in 1991. An interpreted language, Python has a

design philosophy which emphasizes code readability (notably

using whitespace indentation to delimit code blocks rather than

curly braces or keywords), and a syntax which allows programmers

to express concepts in fewer lines of code than would be possible

in languages such as C++ or Java. The language provides constructs

intended to enable writing clear programs on both a small and large

scale.

数据处理

首先,我们将文本文件中的所有单词转换为小写,并使用正则表达式忽略标点符号和空格。下面的代码使用了re模块完成这个任务:

import re

# 打开文件,将所有文本读入字符串

with open('example.txt') as f:

text = f.read()

# 将文本转换为单词列表

words = re.findall('\w+', text.lower())

接下来,我们将用sqlite3定义一个表,将所有单词插入到这个表中,并在表中统计每个单词出现的次数:

#连接数据库

conn = sqlite3.connect('words.db')

#创建游标对象

c = conn.cursor()

#创建数据表

c.execute('''CREATE TABLE word_freq (word text, frequency int)''')

#统计单词频率并插入表中

word_freq = {}

for word in words:

word_freq[word] = word_freq.get(word, 0) + 1

for word, freq in word_freq.items():

c.execute("INSERT INTO word_freq VALUES (?, ?)", (word, freq))

#保存更改

conn.commit()

数据分析

现在我们可以查询单词频率并进行排序。下面的代码将返回出现次数最多的前10个单词:

#查询单词频率并排序

c.execute("SELECT * FROM word_freq ORDER BY frequency DESC LIMIT 10")

top_words = c.fetchall()

#打印结果

for word, freq in top_words:

print(f"{word}: {freq}")

输出结果如下所示:

programming: 2

python: 2

language: 2

code: 2

and: 2

the: 2

a: 2

which: 2

to: 2

in: 2

总结

本文介绍了如何使用Python的内置sqlite3模块来进行简单的数据分析。我们学习了如何创建一个表、插入数据、查询数据和统计频率。这些对于分析小型数据集非常有用。

后端开发标签