我自己就是:数据导入到数据库,然后在数据库建立索引进行查询的。
有一说一,没有索引根本处理不了大数据。所以我只是用pandas进行预处理。
所以,我自己整理了一下pandas导入导出的一些重要参数。
网上这群人抠门的要死,为了这几十行查了大概100多个网页,对半就是:我也不知道,大佬帮忙。
pandas不是很有名吗?
import pandas
import sqlalchemy
import pymysql
# 读取EXCEL
path = 'F:\\mail_log\\mail_list\\13740-2021-05-08日处理邮件共60条,IDC0条.xlsx'
df = pandas.read_excel(path)
# 读取第二个列表
df = pandas.read_excel(path, sheet_name=1)
# 获取所有的sheet
sheet_name_list = pandas.read_excel(path, sheet_name=None).keys()
print(sheet_name_list)
for part in sheet_name_list:
print(part)
# 修改获取的标题列
df = pandas.read_excel(path, header=None)
# 只获取特定列
df = pandas.read_excel(path, usecols=[0, 1, 2])
# 无标题导入列表
time_list = ['1', '2']
df = pandas.DataFrame(time_list)
# 导入带标题数据,同时导入多列
time_list = ['1', '2']
time_list = {'time': time_list, 'time1':time_list}
df = pandas.DataFrame(time_list)
# 切片获得副本
print(df['故障'])
# 新增空数据
df = pandas.DataFrame(columns=['A', 'B', 'C', 'D'])
# 切片原数据并修改
df.loc[:, '故障'] = 'ss'
print(df)
# 清除重复项并保留第一条
df.drop_duplicates(subset=None, keep='first', inplace=None)
# 删除所有数据为空的值
df.dropna(how='any', inplace=True)
# 删除某一列有缺失值的数据
df.dropna(axis=0, subset=["Age", "Sex"], inplace=True) # 丢弃‘Age’和‘Sex’这两列中有缺失值的行
# 叠加数据
# 这个写法不导入导入数据的index
df = df.append([df, df, df], ignore_index=True)
# print(df)
# 获取第一条和最后一条数据
df.head(1)
print(df.tail(1))
# 补齐缺失的数据(合并单元格)
# 向下填充
df.fillna(method='ffill', inplace=True)
# 向上填充
df.fillna(method='bfill', inplace=True)
# 删除最后一行
df.drop(df.tail(1).index, inplace=True)
# 修改标题
df.columns = ["id", "name", "age", '4', '5', '6', '7', '8', '9', '10', '11']
# 删除列
df.drop('5', axis=1, inplace=True)
df.drop(['7', '6'], axis=1, inplace=True)
# 删除行
df.drop(range(0, 20), inplace=True)
# 新增列
df['12'] = '1'
# 计算列并新增
df['list3'] = df['list1'] + df['list2']
# 替换某一个值为另外一个值
df.replace(to_replace='21655', value='1', inplace=True)
# 去除重复数据
df.drop_duplicates(subset=['method', 'year'], keep='first', inplace=True)
# 通过条件删除行
df.drop(df[df['ip'] == '源端设备IP'].index, inplace=True)
# 导出到CSV文件
df.to_csv('1.csv')
# 带中文路径的导入
with open('1.csv', 'r') as file:
df.to_csv(file)
# 导出到EXCEL
df.to_excel('1.xls', sheet_name='good')
# 不带索引导出
df.to_csv('1.csv', index=False)
# 附加到其他文件后(不带标题)
df.to_csv('1.csv', index=False, header=0, mode='a')
# 重构索引
df.reset_index(drop=True, inplace=True)
# 导入到数据库
# 不支持pymysql,支持sqlslchemy驱动pymysql
db = sqlalchemy.create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/d2')
df.to_sql(name='d2.lc_data', con=db, if_exists='replace', index=False)
# 转化成列表
data = df.values.tolist()
# 通过条件筛选数据
print(df[df['12'] == 1])
print(df[df['12'] >= 1])