介绍
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模块来进行简单的数据分析。我们学习了如何创建一个表、插入数据、查询数据和统计频率。这些对于分析小型数据集非常有用。