一、读取文件: 1、from database
import pymysql
from sqlalchemy import create_engine
conn = create_engine('mysql+pymysql://root:123456@localhost:3306/databasename?charset=utf8')
sql = 'select * from tb_name'
df = pd.read_sql(sql=sql,con=con,index_col=True,coerce_float=True,columns=True)
# 或者:
df = pd.read_sql_table(tablename,con=con,index_col=True,coerce_float=True,columns=True)
""" sql--查询语句 ,con--数据库连接信息(地址,用户名,密码,数据库名称)
index_col--设定的列作为行名,默认为None ,coerce_float--将数据库中的decimal的数据
转换为pandas里的float64类型,默认为True ,columns--读取数据的列名,默认为None"""
# 将表存入mysql:
pd.io.sql.to_sql(df,tablename,con=con,if_exists='fail')
# if_exists的参数有fail(如果表存在,则不写入),
# replace(代替原来的表),append(在原来的表上追加数据)
2、from csv/tsv
对于tsv文件,可以使用read_csv()函数,其中sep='\t'.
pd.read_table(filepath,sep='\t',header='infer',names=None,index_col=None,
dtype=None,encoding='utf-8',nrows=None)
pd.read_csv(filepath,sep=',',header='infer',names=None,index_col=None,
dtype=None,encoding='utf-8',nrows=None)
"""header--将某行数据作为列名,默认infer,表示自动识别.无列名则header=None
names--接受array,自定义列名,nrows表示读取前n行,默认为None """
df.to_csv(path_or_buf,sep=',',na_rep='',columns=None,header=True,index=True,
index_label=None,mode='w',encoding='utf-8')
""" path_or_buf--存储的路径 na_rep--代表缺失值 columns--写出的列名 header--是否将列名
写出 mode--数据写入模式,默认‘w’ """
3、from excel
pd.read_excel(filepath,sheetname='',header='infer',names=None,index_col=None,
dtype=None)
# sheetname--接受string,int,数据表的位置,默认0 header--将某行作为列名,默认infer
# names--接受array,自定义列名
df.to_excel(excel_writer,sheetname='',na_rep='',header=True,index=True,
index_label=None,mode='w',encoding='utf-8')
# excel_writer--存储文件路径 sheetname--sheet表名,默认sheet1
二、增删改查 DataFrame 1、常用属性
df.values # 查看所有元素
df.index # 查看索引
df.columns # 查看所有列名
df.dtype # 查看字段类型
df.size # 元素总数
df.ndim # 表的维度数
df.shape # 返回表的行数与列数
df.info # DataFrame的详细内容
df.T # 表转置
2、 访问DataFrame的数据
# 基本查看方式
单列数据:df['col1']
单列多行:df['col1'][2:7]
多列多行:df[['col1','col2']][2:7]
多行数据:df[:][2:7]
前几行: df.head()
后几行: df.tail()
# loc[行索引名称或条件,列索引名称]
# iloc[行索引位置,列索引位置]
单列切片:df.loc[:,'col1']
df.iloc[:,3]
多列切片:df.loc[:,['col1','col2']]
df.iloc[:,[1,3]]
花式切片:df.loc[2:5,['col1','col2']]
df.iloc[2:5,[1,3]]
条件切片:df.loc[df['col1']=='245',['col1','col2']]
df.iloc[(df['col1']=='245').values,[1,5]]
# 增删改
df.loc[df['col1']=='258','col1']=214
# 注意:数据更改的 *** 作无法撤销,更改前最好对条件进行确认或者备份数据
df['col2'] = 计算公式/常量
# 删除某几行数据,inplace为True时在源数据上删除,False时需要新增数据集
df.drop(labels=range(1,11),axis=0,inplace=True)
# 删除某几列数据
df.drop(labels=['col1','col2'],axis=1,inplace=True)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)