python将Excel文档转成.db数据库文件
python实现Excel转.db数据库
1.程序实现
程序实现以下功能:
1.读取一个Excel文件,文件名通过函数传参数传入
2.将文件读取的内容保存到一个数据库文件中
3.数据库的文件名以传入的Excel文件的文件名命名
4.将excel文件的工作簿的名字作为数据库的表单名
5.将Excel文件的第一行作为数据库的列命名
6.将Excel文件的每一个行的内容加入数据库中
import pandas as pd
import sqlite3
import os
import sys
def excel_to_sqlite(excel_file_path):
try:
# 获取 Excel 文件名(不包括扩展名)
excel_file_name = excel_file_path.split('/')[-1].split('.')[0]
# 创建 SQLite 数据库连接
db_file_name = f"{excel_file_name}.db"
conn = sqlite3.connect(db_file_name)
# 使用 ExcelFile 类打开 Excel 文件
excel_file = pd.ExcelFile(excel_file_path)
# 遍历所有工作簿
for sheet_name in excel_file.sheet_names:
# 从 Excel 文件读取数据框
df = pd.read_excel(excel_file, sheet_name)
# 将数据框写入 SQLite 数据库,使用工作簿的名字作为表名
df.to_sql(sheet_name, conn, index=False, if_exists='replace')
# 关闭数据库连接
conn.close()
print(f"成功将 Excel 文件 {excel_file_path} 写入 SQLite 数据库 {db_file_name} 中的所有工作簿。")
except Exception as e:
print(f"发生错误: {e}")
def get_data_from_db(db_file_name, table_name):
try:
# 创建 SQLite 数据库连接
conn = sqlite3.connect(db_file_name)
# 使用 SQL 查询获取数据
query = f"SELECT * FROM {table_name};"
df = pd.read_sql_query(query, conn)
# 打印获取的数据
print(f"获取 {db_file_name} 数据库中表 {table_name} 的数据:")
# 关闭数据库连接
conn.close()
except Exception as e:
print(f"发生错误: {e}")
# 调用函数将 Excel 文件写入 SQLite 数据库
if __name__ == "__main__":
print("开始将 Excel 文件写入 SQLite 数据库...")
excel_file_path = sys.argv[1]
excel_to_sqlite(excel_file_path)
excel_name = excel_file_path.split('/')[-1].split('.')[0]
db_name = f"{excel_name}.db"
get_data_from_db(db_name,"AIR")//AIR是Excel文档中的工作簿的名字
2.数据查询、获取
在函数get_data_from_db中,df
的数据类型是<class 'pandas.core.frame.DataFrame'>
在 pandas 中,DataFrame 类提供了许多有用的属性和方法,以便处理和分析数据。以下是 DataFrame 类的一些常用属性和方法,以及简要说明:
-
head(n):
-
作用:返回数据框的前 n 行。
-
示例:
df.head(5) # 返回前5行
-
-
tail(n):
-
作用:返回数据框的后 n 行。
-
示例:
df.tail(3) # 返回后3行
-
-
shape:
-
作用:返回数据框的形状,即行数和列数。
-
示例:
print(df.shape) # 返回 (行数, 列数)
-
-
columns:
-
作用:返回数据框的列名。
-
示例:
print(df.columns) # 返回列名列表
-
-
describe():
-
作用:返回数据框的描述性统计信息,如均值、标准差等。
-
示例:
print(df.describe())
-
-
info():
-
作用:返回数据框的基本信息,包括每列的数据类型和非空值数量。
-
示例:
df.info()
-
-
loc[row_index, col_name]:
-
作用:通过行和列的标签选择单个元素。
-
示例:
print(df.loc[0, 'ColumnName'])
-
-
iloc[row_index, col_index]:
-
作用:通过行和列的索引选择单个元素。
-
示例:
print(df.iloc[0, 2])
-
-
set_index(col_name):
-
作用:将指定列设置为索引列。
-
示例:
df.set_index('ColumnName', inplace=True)
-
-
groupby(col_name):
-
作用:按指定列对数据框进行分组。
-
示例:
grouped_data = df.groupby('ColumnName')
-
-
sort_values(by=col_name, ascending=True):
-
作用:根据指定列对数据框进行排序。
-
示例:
df.sort_values(by='ColumnName', ascending=False, inplace=True)
-
-
fillna(value):
-
作用:用指定值填充缺失值。
-
示例:
df.fillna(0, inplace=True)
-
这只是 DataFrame 类的一小部分功能,pandas 提供了更多用于数据处理和分析的工具。