外部数据导入
导入excel文件
pandas导入excel用read_excel()方法:
import pandas as pd
excel_file1 = pd.read_excel('data/测试.xlsx',encoding='utf-8')复制代码
姓名 年龄 工作 工资
0 张三 25 学生 200
1 李四 24 工人 3000
2 王伟 28 NaN 5000
3 王二毛 22 自由职业 6000复制代码
第一个参数是路径,既可以使用绝对路径又可以使用相对路径,如果文件名含有汉字,注意指定设置一下属性encoding = 'utf-8'
,另设置sheet_name
指定具体的Sheet名字,也可传入sheet的顺序,从0开始。
excel_file1 = pd.read_excel('data/test.xlsx',sheet_name = 0)复制代码
指定索引
列索引默认从0开始,通过index_col
设置,header
设置行索引。
excel_file1 = pd.read_excel('data/测试.xlsx',encoding='utf-8',index_col=0)复制代码
年龄 工作 年资
姓名
张三 25 学生 200
李四 24 工人 3000
王伟 28 NaN 5000
王二毛 22 自由职业 6000复制代码
excel_file1 = pd.read_excel('data/测试.xlsx',encoding='utf-8',header=1)复制代码
张三 25 学生 200
0 李四 24 工人 3000
1 王伟 28 NaN 5000
2 王二毛 22 自由职业 6000复制代码
指定索引列
有时本地文件列数太多,可以设置usercols
指定导入的列,也可以列表形式传入多个值,表示传入哪些列。
excel_file1 = pd.read_excel('data/测试.xlsx',encoding='utf-8',usecols=[0,2])复制代码
姓名 工作
0 张三 学生
1 李四 工人
2 王伟 NaN
3 王二毛 自由职业复制代码
常用方法
shape()
可以获取excel文件的行和列,以元祖形式返回;info()
获取数据类型;astype()
可转换列里面的数据类型,括号里是要转换的目标类型;如df[列2].astype('float64')
;df['列'].dtype
可查看列的类型isnull()
判断哪个值是缺失值;dropna()
删除有缺失值的行,返回删除后的数据,传入参数how=all,要全为空值才会删除;fillna()
括号内可直接填入要要填充的值,也可指定列填充,以字典形式传参;drop_duplicates()
默认对所有重复值判断,默认保留keep=first
第一个行值;通过keep
修改,值可为last
,保留最后一个,还可设置keep
为False
,一个也不保留。另也可指定列名去重,如传入参数subset
=['列名1,列名2'],注意是以列表形式传参;head()
传入的参数代表获取前几行;describe()
掌握数值的分布情况,如均值,最值,方差,分位数。column
和index
可设置列索引
和行索引
,以列表
形式传参;set_index()
重新设置索引列,传入要指名要用做行索引的名称;reset_index(level = None,drop=False,inplace = False)
,level指定要将层次化索引的第几级别转化为columns
,第一个索引为0级,第二个为1级,默认全部转化为columns。drop
是否将原索引删掉,inplace
是否修改原数据表;该方法常用于数据分组和数据透视表中。rename()
重命名索引,可重新设置columns
和index
,以字典
形式传参,key
为原值,value
为替换后的值。
导入CSV文件
pandas导入csv文件用read_csv()方法;
import pandas as pd
csv_file1 = pd.read_csv('.\\data\\train-pivot.csv',index_col=0,header=0,nrows = 2) 复制代码
通过sep
设置分割符,encoding
指定编码格式。导入csv文件要指定为gbk,不然会报错,如果一个大文件你只需看前面几行,通过nrows
设置。
import pandas as pd
csv_file1 = pd.read_csv('data/train-pivot.csv',encoding='gbk',nrows=2)
print(csv_file1)复制代码
用户ID 客户分类 区域 是否省会 7月销量 8月销量
0 59224 A类 一线城市 是 6 20 0
1 55295 B类 三线城市 否 37 27 35复制代码
可以设置usercols
指定导入的列。
用户ID 区域
0 59224 一线城市
1 55295 三线城市
2 46035 二线城市
3 2459 一线城市
4 22179 三线城市复制代码
导入sql
pandas中有read_sql()
方法:
import pandas as pd
import pymysql
# 创建连接
conn = pymysql.connect(host = 'localhost',user = 'python',
password = 'passwd',db = 'test',
charset = 'utf-8'
)
'''
user:用户名
password:密码
host:数据库地址/本机用localhost
db:数据库名
charset:编码,一般为utf-8
'''
sql = "SELECT * FROM user" # 写要执行的sql语句
pd.read_sql(sql,conn)复制代码
补充:数据导出
df.to_excel() 导出excel文件;
df.to_csv() 导出csv文件;