数据读取:
读取: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)