Pandas 常用 *** 作汇总

Pandas 常用 *** 作汇总,第1张


一、读取文件: 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)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/579704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存