读取表格数据
pandas常用的读取文本数据的函数
函数 | 描述 |
---|
read_csv | 从文件,url或者文件类型对象读取分隔好的数据, 逗号是默认分隔符 |
read_excel | 从excel的xls或者xlsx文件中读取表格数据 |
read_table | 从文件,url或者文件类型对象读取分隔好的数据, 制表符(’\t’) |
read_html | 从html文件中读取所有表数据 |
read_json | 从json字符串中读取数据 |
read_sql | 将sql查询的结果, 读取为pandas的DataFrame |
读取表格数据利用read_excel/read_csv
"""
@author: xuan
@time: 2021/07/12 11:49
@FileName: pandas读取表格数据.PY
"""
import pandas as pd
class ReadExcelData(object):
def __init__(self, path, sheet_name=""):
self.path = path
self.sheet_name = sheet_name
def read_excel(self):
"""
:param path: 表格路径
:param sheet_name: 表格中的sheet名字
:return:
"""
excel_suffix = self.path.split('.')[1]
if excel_suffix == 'csv':
if self.sheet_name:
df = pd.read_csv(self.path, sheet_name=self.sheet_name, encoding='gbk')
else:
df = pd.read_csv(self.path, encoding='gbk')
elif excel_suffix == 'xlsx':
if self.sheet_name:
df = pd.read_excel(self.path, sheet_name=self.sheet_name, encoding='gbk')
else:
df = pd.read_excel(self.path, encoding='gbk')
return df
def read_df_content(self, column_list):
"""
:param column_list: 需要获取的列名
:return:
"""
df = self.read_excel()
_dict = {}
columns = list(df.columns)
_dict = {}
if column_list:
_dict = {column: df[column].values.tolist() for column in column_list if column in columns}
else:
_dict = {column: df[column].values.tolist() for column in columns}
return _dict
def deal_dict(self):
df = self.read_excel()
dict_list = df.reset_index().T.to_dict()
_list = [dict_list[index] for index in dict_list]
return _list
一个表格的两个sheet数据合并, 去重, 写入一个新的sheet
from openpyxl import load_workbook
import pandas as pd
def write_excel(df1, df2, columns, key, name):
"""
:param df1: 一个sheet表数据
:param df2: 另一个sheet表数据
:param columns: 需要合并的数据, 写入列名的顺序
:param key: 根据那个列名进行合并
:param name: 合并到一个sheet的名字
:return:
"""
df = pd.merge(df1, df2, on=[key], how='outer')
df2 = df.drop_duplicates().reset_index(drop=True)
excel_writer = pd.ExcelWriter(path, engine='openpyxl')
book = load_workbook(excel_writer.path)
excel_writer.book = book
df2.to_excel(excel_writer=excel_writer, sheet_name=name, encoding='gbk', index=False, columns=columns)
excel_writer.close()