pandas 学习笔记03 数据读取与输出

数据读取:

        读取:df = df.pa.read_xxx()

        导出:df.to_xxx()

支持csv,excel,json,html,cdf=pd.read_clipboard()-剪贴板,SQL等主流数据格式

#csv语法和实例
pd.read_csv(
    filepath_or_buffer: FilePathOrBuffer,  #支持本地path,url,字符串,io字节
    sep=lib.no_default,#分割符,默认为',',常见的分割符还有(\t)、空格、'|'(tab)等 
    delimiter=None, #定界符,生效后sep参数无效
    # Column and Index Locations and Names
    header="infer",#header=0第一行,None-没有表头,[1,2,3]-多层索引
    names=lib.no_default,#指定列的名称,不包含列名,header=None,name=['name1','name2](序列)
    index_col=None,#支持int/str/int序列/str序列/False 默认为None。值为False-不在使用首列为索引,值为num-第几列是索引,值可为列名,列名列表,数字列表
    usecols=None,#只读取部分列,可按索引或列名组成的列表作为值,df筛选功能排序,或者lambda x:x.upper() in ['COL3','COL1] in后面的为顺序
    squeeze=False,#返回序列,True 一列为S,其他为DataFrame
    prefix=lib.no_default,#表头前缀,主要用于无表头的数据
    mangle_dupe_cols=True,#处理重复列名,TRUE -x,x.1...,x.5 False-x,x,x 要覆盖前面列名
    # General Parsing Configuration
    dtype: DtypeArg | None = None,#指定数据类型 值为np.float64-所有数据均为此类型,{'c1':str,'c2':np.float64}或者[datetime,datetiame,str,float] 依次指定
    engine=None,#数据分析引擎,一般不需从新值,c快,python功能完善
    converters=None,#对列数据进行转换,字典形式传入,列名作为字典的key
    true_values=None,#将指定的文本转为True 或者False,默认为None
    false_values=None,
    skipinitialspace=False,
    skiprows=None,#跳过指定行 2,range(2)代表跳过前三行,[24,234,141]跳过指定行,lambda x:x%2!=0 隔行跳
    skipfooter=0,# 1-最后一行不加载
    nrows=None,#读取指定行 值为int
    # NA and Missing Data Handling
    na_values=None,#空值替换,NaN,null,NULL,nan等默认为空值,还需注意与keep_default_na搭配使用
    keep_default_na=True,
    na_filter=True,#检查丢失值,大文件设置为False可提高读取速度
    verbose=False,
    skip_blank_lines=True,#指定是否跳过空行,否则标记为NaN
    # Datetime Handling
    parse_dates=False,#时间解析器,默认使用dateutil.parser.parser做转换,某些或所有列启用了parse_dates,并且datetime字符串格式都相同,设置为True,提高速度
    infer_datetime_format=False,#设定为True,parse_date可用,pandas将尝试转换时间类型
    keep_date_col=False,#True保留原有的时间列,False将不在保留
    date_parser=None,
    dayfirst=False,#True dd/mm-mm/dd eg:2020-01-06 -2020-06-01
    cache_dates=True,#解析重复日期字符串,会大大提高速度
    # Iteration#文本处理
    iterator=False, #True,返回TextFileReader对象,可迭代处理
    chunksize=None,#指定文件块的大小,用于分块处理大型csv文件
    # Quoting, Compression, and File Format
    compression="infer",#压缩格式
    thousands=None,#对文件中的符号进行特殊处理
    decimal: str = ".",
    lineterminator=None,#行结束符,只对c解析器起作用
    quotechar='"',#表示引用数据的开始和结束的字符
    quoting=csv.QUOTE_MINIMAL,#空值识别字段的引号模式0-QUOTE_MINIMAL 仅特殊字段有引号 1-QUOTE_ALl 所有字段 2-QUOTE_NONNUMERIC 非数字字段 3-QUOTE_NONE 都没有
    doublequote=True,#双引号
    escapechar=None,#可以传入一个转义符,用于过滤数据中的该转义符
    comment=None,#注释标识,单个字符,在行中找到标识符,将完全忽略该行
    encoding=None,#指定字符编码,’utf8','gb2312'
    encoding_errors: str | None = "strict",
    dialect=None,
    # Error Handling
    error_bad_lines=None,
    warn_bad_lines=None,
    # TODO (2.0): set on_bad_lines to "error".
    # See _refine_defaults_read comment for why we do this.
    on_bad_lines=None,
    # Internal
    delim_whitespace=False,#空格分隔符
    low_memory=_c_parser_defaults["low_memory"],
    memory_map=False,
    float_precision=None,
    storage_options: StorageOptions = None,
)
#读取excel
dfs=pd.read_excel()
#表格
#sheet_name指定读取那个sheet,默认1,sheet_name=1代表读取第二个sheet
# shent_name='name1'按表名读取
# sheet_name=None 读取所有表格
# sheet_name=[0,1,'sheet5'] 返回一个df组成的字段
#  dfs['sheet5']#按sheet5名读取
#数据输出
df.to_csv('done.csv',index=False) #不要索引
#对较大文件进行压缩处理,也可用sep设置分隔符
compression_opts = dict(method='zip',archive_name='out.csv')
df.to_csv('out.zip',index=False,compression=compression_opts)

df.to_excel('path_to_file.xlsx',sheet_name='sheet1',index=False)#指定sheet名,不要索引
df.to_excel('path_to_file.xlsx',index='label',merge_cells=False)#指定索引为label,不合并单元格
#指定操作引擎01
df.to_excel('path_to_file.xlsx',sheet_name='sheet1',index=False,engine='xlsxwriter') 
#指定操作引擎02
writer=pd.ExcelWriter('path_file.xlsx',engine='xlsxwriter')
df.to_excel(writer)
writer.save()
#设置系统引擎
from pandas import options
options.io.excel.xlsx.writer = 'xlsxwriter'
df.to_excel('path_file.xlsx',sheet_name='sheet1')

#写入SQL
from sqlalchemy import create_engine #需安装SQLALchemy
engine = create_engine('sqlite:///:memory:')
#取出表名为data的数据
with engine.connect() as conn,conn.begin():
    data = pd.read_sql_table('data',conn)
#data
#将数据写入
data.to_sql('data',conn)
#大量写入
data.to_sql('data_chunked',engine,chunksize=1000)
#使用sql查询
pd.read_sql_query('select * from data',engine)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值