pandas 读取文件、json、html、数据库

读取csv文件

  • pd.read_csv(‘data/data.csv’) # 注意目录层级
  • pd.read_csv(‘data.csv’) # 文件与代码在同一目录
  • pd.read_csv(‘data/my/my.data’) # csv文件的扩展名称不一定是.csv
  • pd.read_csv(‘/user/data/data.csv’) # 本地绝对路径
  • pd.read_csv(‘https://www.acb.com/files/data/GDP-China.csv’) # 使用URL
  • 字符串
from io import StringIO
data=('col1,col2,col3\n'
        'a,b,1\n'
        'a,b,2')
pd.read_csv(StringIO(data))
pd.read_csv(StringIO(data),dtype =object)
  • pd.read_csv(‘sss.csv’,encoding=‘utf8’) # 指定编码
  • pa.read_csv(data,thousands=‘,’) # 指定千分为分隔符

分隔符

  • pd.read_csv(data,sep=‘\t’) # 制表符分隔tab
  • pd.read_table(data) # read_table 默认是指标分隔tab
  • pd.read_csv(data,sep=‘|’) # '|'分隔符
  • pd.read_csv(data,sep=‘(?<!a>|(?!1))’,engine=‘python’) # 使用正则

表头

  • pd.read_csv(data,header=0) # 第一行(数据第一行,不是文件的第一行)
  • pd.read_csv(data,header=None) # 忽略头,全部做为为数据

列名

  • pd.read_csv(data,names=[‘列1’,‘列2’]) # 指定列名,代替文件的第一行
  • pd.read_csv(data,names=[‘列1’,‘列2’],header = None) # 指定列名,全部做为为数据

索引

  • pd.read_csv(data,index_col=False) # 不在使用首列作为索引
  • pd.read_csv(data,index_col=0) # 指定第一列为索引
  • pd.read_csv(data,index_col=‘年份’) # 指定第列名
  • pd.read_csv(data,index_col=[‘a’,‘b’]) # 层级索引
  • pd.read_csv(data,index_col=[0,3]) # 层级索引

使用部分列

  • pd.read_csv(data,usecols=[0,4,3]) # 按索引只读取指定列,与顺序无关
  • pd.read_csv(data,usecols=[‘列1’,‘列5’]) # 按列名,列名必须存在

表头前缀

  • pd.read(data,prefix=‘_c’,header=None) # 表头默认加上_c前缀

处理重复列名

  • pd.read(data,mangle_dupe_cols = True) # 设置为true时,列名变为X,X.1,…,X.N;如果为false,当列名中存在重复时会报ValueError

数据类型

  • pd.read_csv(data,dtype=np.float(64)) # 所有数据均为此类型
  • pd.read_csv(data,dtype={‘c1’:np.float64,‘c2’:str}) # 指定字段的类型
  • pd.read_csv(data,dtype=[datetime,datetime,str,float]) # 依次指定

真假值转换

  • pd.read_csv(data,true_values=[‘Yes’,‘ok’],false_valuse=[‘No’]) # 将yes,ok转为True,no转为false

行操作

  • pd.read_csv(data,skiprows=2) # 跳过前三行
  • pd.read_csv(data,skiprows=range(2)) # 跳过前三行
  • pd.read_csv(data,skiprows=[24,234,141]) # 跳过指定行
  • pd.read_csv(data,skiprows=np.array([2,6,11])) # 跳过指定行
  • pd.read_csv(data,skiprows = lambda x:x%2!=0) # 隔行跳过
  • pd.read_csv(data,skipfooter = 1) # 不加载最后一行
  • pd.read_csv(data,nrows=1000) # 读取前1000行

空值替换

  • pd.read_csv(data,na_values=[5]) # 5,5.0被认为NaN
  • pd.read_csv(data,na_values=‘?’) # ?被认为NaN
  • pd.read_csv(data,keep_default_na = False,na_values=[‘’]) # 空值为NaN
  • pd.read_csv(data,keep_default_na = False,na_values=[‘NA’,‘0’]) # 字符NA,0为NaN
    在这里插入图片描述

日期解析

时间解析库:默认dateutil.parser,parser
date_parser = pd.io.date_converts.parse_date_time
date_parser = lambda x: pd.todatetime(x,utc=True,format=‘%d%b%Y’)
date_parser = lambda d: pd.datetime.strotime(d,‘%d%b%Y’)

  • pd.read_csv(data,parse_dates=[‘年份’],date_parser=date_parser) # 指定列和解析方式
  • pd.read_csv(data,parse_dates = True) # 自动解析日期
  • pd.read_csv(data,parse_dates =[‘年份’]) # 指定日期字段进行解析
  • pd.read_csv(data,parse_dates={‘时间’:[1,4]})
  • pd.read_csv(data,parse_dates =[‘年份’],inter_datetime_format=True) # 如果datetime字符串格式都相同,inter_datetime_format=True将提高解析速度

读取Excel文件

  • pd.read_excel(“data/data.xlsx”) # 相对路径 默认读取第一个sheet

  • pd.read_excel(“data.xlsx”) # 文件与代码在同一目录下

  • pd.read_excel(“/user/gairuo/data/data.xlsx”) # 绝对路径

  • pd.read_excel(‘https://www.acb.com/files/data/GDP-China.xlsx’)

表格

  • pd.read_excel(‘tmp.xlsx’,sheet_name=1) # 读取第二个sheet
  • pd.read_excel(‘tmp.xlsx’,sheet_name=‘总表’) # 安装sheet名称读取
  • dfs = pd.read_excel(‘tmp.xlsx’,sheet_name=[0,1,‘sheet5’]) # 读取第一、五,名称为sheet5的sheet,返回一个df字典;dfs[‘sheet5’]获取sheet5的数据
  • dfs = pd.read_excel(‘tmp.xlsx’,sheet_name=None) # 所有sheet

表头

  • pd.read_excel(‘tmp.xlsx’,header=None) # 不设表头
  • pd.read_excel(‘tmp.xlsx’,header=2) # 设置第三行为表头
  • pd.read_excel(‘tmp.xlsx’,header=[0,1]) # 两层表头,多层索引

列名

  • pd.read_excel(‘tmp.xlsx’,names=[‘姓名’,‘年龄’,‘成绩’]) # names 指定列名
  • pd.read_excel(‘tmp.xlsx’,names=c_list) # 传入列表参数
  • pd.read_excel(‘tmp.xlsx’,header=None,names=None) # 没有表头需要设置为None

数据输出

导出csv

  • df.to_csv(“done.csv”) # 导数据到同级目录

  • df.to_csv(“data/done.csv”) # 可以指定文件目录

  • df.to_csv(“done.csv”,index=False) # 不要设置索引

  • df.to_csv(‘out.zip’,index = False,compression = {‘method’:‘zip’,‘archive_name’=‘out.csv’})

导出excel

  • df.to_excel(‘path_to_file.xlsx’) # 导出,指定文件名

  • df.to_excel(‘path_to_file.xlsx’,sheet_name=‘Sheet1’,index=False) # 指定sheet名,不要索引

  • df.to_excel(‘path_to_file.xlsx’,index_label=‘label’,merge_cells=False) # 指定索引,不合并单元格

  • 多个df分不同sheet导入到一个excel文件中

    with pd.ExcelWriter('path_to_file.xlsx') as writer:
        df1.to_excel(writer,sheet_name='sheet1')
        df2.to_excel(writer,sheet_name='sheet2')
    
  • df.to_excel(‘path_to_file.xlsx’,sheet_name=‘Sheet1’,engine=‘xlsxwriter’)

html

  • print(df.to_html()) # df.to_html() 只有表格部分(html片段)
  • df.to_html(‘D:\ss.html’) # 保存到文件
  • print(df.to_html(columns=[0])) # 输出指定列
  • print(df.to_html(bold_rows=False)) # 表头不加粗
  • print(df.to_html(classes=[‘class1’,‘class2’])) # 表格指定样式,支持多个
  • dfs = pd.read_html(url) # 读取html中的table,url可以是网络资源,也可以是本地html文件 ;返回一个列表
  • df_1 = pd.read_html(url,attrs={‘id’:‘table’}) # 读取id=‘table’的表格
  • dfs = pd.read_html(url,attrs={‘calss’:‘table’}) # 读取class=‘table’的表格

JSON

  • data = pd.read_json(‘…/examples/example.json’) # 读取json数据

  • data = pd.read_json(‘json 字符串’) # 读取json字符串
    在这里插入图片描述

  • data.to_json(‘…/examples/example.json’) # 保存数据到josn文件

数据库(SQL)

  • 创建数据库引擎

    from sqlalchemy import create_engine
    engine = create_engine('sqlite:///:memory:')
    
  • data = pd.read_sql_table(‘data’,engine) # 读取data表

  • df_data.to_sql(‘data’,engine) # 将df_data的数据写入到data表

  • pd.read_sql_query(‘select * from data’,engine) # 使用sql查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值