zoukankan      html  css  js  c++  java
  • pandas模块之读取文件

    首先我们来看一个文件

    1  男  北京  刘一  我笑
    #跳过此行,序号1
    2  女  上海            刘珊  你笑
    3  男  杭州  刘五  他笑
    #跳过此行,序号四
    4  女   重庆      刘六  不笑了

    下面来分析内容,并使用参数

    1 第一眼:排列很乱,空格有的多有的少  --》sep='s+' 用正则去匹配
    
    2 没用标题 ---》names=["序号","性别","城市","名字"]
    
    3 最后一列看着不雅观,不要,选定我们需要的 --》usecols=[0,1,2,3]

    4 还有注释这不是坑爹吗 ---》skiprows=[1,4]

    5 我们最后来指定一个索引 ---》index_col='名字'
    data=pd.read_csv('pandasfile.txt',names=["序号","性别","城市","名字"],index_col='名字',skiprows=[1,4],usecols=[0,1,2,3],sep="s+")
    print(data)

     下面是结果

        序号 性别  城市
    名字           
    刘一   1  男  北京
    刘珊   2  女  上海
    刘五   3  男  杭州
    刘六   4  女  重庆

     其他

    pandas.read_csv()
    从文件,URL,文件型对象中加载带分隔符的数据。默认分隔符为'',"
    pandas.read_table()
    从文件,URL,文件型对象中加载带分隔符的数据。默认分隔符为"	"

    如果要指定的列太多,怎么办,去除上面的usecols,另敲一个命令:data.iloc[:,0:3] 命令ix已经被替代,以后不使用

     操作:

    选取性别==女的行

    print(data.loc[data['性别']==''])

     选取城市是北京  和上海 的行,以及 取反(名称伴终生啊)

    print(data.loc[data['城市'].isin(['北京','上海'])])
    
    结果:
        序号 性别  城市  其他
    名字               
    刘一   1  男  北京  我笑
    刘珊   2  女  上海  你笑

    -------------------------取反--------------------------------------------
    print(data.loc[~data['城市'].isin(['北京','上海'])])
    结果:

         序号 性别 城市 其他
    名字
    刘五   3  男  杭州 他笑
    刘六   4  女  重庆 不笑了

     使用replace替换单个或者多个

    1 替换单个
    kk=data['其他'].replace('我笑','')
    print(kk)
    结果
    名字
    刘一     我笑
    刘珊      哭
    刘五     他笑
    刘六    不笑了
    Name: 其他, dtype: object
    
    2 使用正则匹配多个替换
    kk=data['其他'].replace('.*笑','',regex=True) 
    print(kk)
    结果:
    名字
    刘一     哭
    刘珊     哭
    刘五     哭
    刘六    哭了
    Name: 其他, dtype: object

     替换多个列的情况,我们最后加一列,我们发现:索引不会被替换

    data的值
        序号 性别  城市   其他
    名字                
    刘一   1  男  北京   我笑
    刘珊   2  女  上海   你笑
    刘五   3  男  杭州   他笑
    刘六   4  女  重庆  不笑了
    刘笑   5  女  苏笑   呵呵
    
    
    print(data.replace('','',regex=True)) #不加regex的话,data的值不会变化,必须要具体的值,例如:data.replace('苏笑','哭')
    
    结果:
        序号 性别  城市   其他
    名字                
    刘一   1  男  北京   我
    刘珊   2  女  上海   你
    刘五   3  男  杭州   他
    刘六   4  女  重庆  不了
    刘笑   5  女  苏   呵呵

    最后,经过上面的一大堆操作,data的数据还是不会变,要让它变怎么处理

    inplace=True

     一个很魔性的功能,写入剪贴板

    data.to_clipboard()  #直接就可以在其他地方黏贴了

     写入文件:经过测试:sep使用s+报错,使用‘ ’和‘ ’都不是我们要的结果,主要文件打开状态使用此命令:报权限错误

    data.to_csv('D:\a.csv',sep=',',header=True,index=True)  #它的索引还是会写在最前面
    sep:字段分隔符
    header:是否需要头部
    index:是否需要行号

     

    其他参数:

    path:表示文件系统位置、URL、文件型对象的字符串。
    
    sep或delimiter:用于对行中各字段进行拆分的字符序列或正则表达式。
    
    header:用作列名的行号。默认为0(第一行),如果文件没有标题行就将header参数设置为None。
    
    index_col:用作行索引的列编号或列名。可以是单个名称/数字或有多个名称/数字组成的列表(层次化索引)。
    
    names:用于结果的列名列表,结合header=None,可以通过names来设置标题行。
    
    skiprows:需要忽略的行数(从0开始),设置的行数将不会进行读取。
    
    na_values:设置需要将值替换成NA的值。
    
    comment:用于注释信息从行尾拆分出去的字符(一个或多个)。
    
    parse_dates:尝试将数据解析为日期,默认为False。如果为True,则尝试解析所有列。除此之外,参数可以指定需要解析的一组列号或列名。如果列表的元素为列表或元组,就会将多个列组合到一起再进行日期解析工作。
    
    keep_date_col:如果连接多列解析日期,则保持参与连接的列。默认为False。
    
    converters:由列号/列名跟函数之间的映射关系组成的字典。如,{"age:",f}会对列索引为age列的所有值应用函数f。
    
    dayfirst:当解析有歧义的日期时,将其看做国际格式(例如,7/6/2012   ---> June 7 , 2012)。默认为False。
    
    date_parser:用于解析日期的函数。
    
    nrows:需要读取的行数。
    
    iterator:返回一个TextParser以便逐块读取文件。
    
    chunksize:文件块的大小(用于迭代)。
    
    skip_footer:需要忽略的行数(从文件末尾开始计算)。
    
    verbose:打印各种解析器输出信息,如“非数值列中的缺失值的数量”等。
    
    encoding:用于unicode的文本编码格式。例如,"utf-8""gbk"等文本的编码格式。
    
    squeeze:如果数据经过解析之后只有一列的时候,返回Series。
    
    thousands:千分位分隔符,如",""."
  • 相关阅读:
    查看SQL语句执行时间、IO开销
    创建性能监视器(logman)
    IIS连接数
    SQL Server重建索引计划
    删除不存在的网卡
    授予普通域用户远程桌面连接DC/客户端权限
    AD新建用户、组、OU
    常用短语
    Android之APP模块编译
    Web&网络协议
  • 原文地址:https://www.cnblogs.com/mmyy-blog/p/11958219.html
Copyright © 2011-2022 走看看