读取Excle数据
pd.read_excel()
值:
io, # excel 路径
sheetname=0, # 默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。注意:int/string返回的是dataframe,而none和list返回的是dict of dataframe。
header=0, # 指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;
skiprows=None, # 省略指定行数的数据 skip_footer:省略从尾部数的行数据
index_col=None, # 指定列为索引列,也可以使用 u’string’
names=None, # 指定列的名字,传入一个list数据
导出数据
import pandas as pd
import openpyxl
df = pd.read_excel("D:\\pycharm\\data\\test.xlsx")
df.to_excel("D:\\pycharm\\data\\excel2excel.xlsx", encoding='utf-8', index=False) #数据导出到excel2excel.xlxs
dt = pd.read_excel("D:\\pycharm\\data\\excel2excel.xlsx")
print(dt)
导入数据库
import pandas as pd # 读取mysql
import MySQLdb
mysql_cn= MySQLdb.connect(host='localhost', port=3306,user='username', passwd='password', db='mydb')
df = pd.read_sql('select * from test;', con=mysql_cn)
mysql_cn.close()
去重
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
subset # 对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。默认值为subset=None表示考虑所有列。
keep='first' # 表示保留第一次出现的重复行,是默认值。keep另外两个取值为"last"和False,分别表示保留最后一次出现的重复行和去除所有重复行。
inplace=True # 表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。
缺失值处理
datafile = u'E:\\pythondata\\tt.xlsx'#文件所在位置
data = pd.read_excel(datafile)#如果是csv文件则用read_csv
print("显示缺失值,缺失则显示为TRUE:\n", data.isnull())#是缺失值返回True,否则范围False
print("---------------------------------\n显示每一列中有多少个缺失值:\n",data.isnull().sum())#返回每列包含的缺失值的个数
删除缺失值具体的情况是一下几种:
data.dropna() # 直接删除含有缺失值的行
data.dropna(axis = 1) # 直接删除含有缺失值的列
data.dropna(how = 'all') # 只删除全是缺失值的行
data.dropna(thresh = 3) # 保留至少有3个非空值的行
data.dropna(subset = [u'血型 ']) # 判断特定的列,若该列含有缺失值则删除缺失值所在的行
简单的缺失值插补方法:
data.fillna(data.mean()) # 均值插补
data.fillna(data.median()) # 中位数插补
data.fillna(data.mode()) # 众数插补
data.fillna(data.max()) # 最大值插补
data.fillna(data.min()) # 最小值插补
data.fillna(0) # 固定值插补--用0填充
data.fillna(5000) #固定值插补--用已知的行业基本工资填充
data.fillna(method='ffill')#最近邻插补--用缺失值的前一个值填充
data.fillna(method='pad') #最近邻插补--用缺失值的前一个值填充