pandas 实战笔记

pd.show_versions()
pd.__version__
pd.read_csv?            --help docu
pd.set_option?            --help docu
读取文件:
        oo=pd.read_csv('olympics.csv',skiprows=4)
        oo = pd.read_table('Z:/test.txt',header=None,encoding='gb2312',delim_whitespace=True,index_col=0)
        
        def convert_percent(val):
            """
            Convert the percentage string to an actual floating point percent
            - Remove %
            - Divide by 100 to make decimal
            """
            new_val = val.replace('%', '')
            return float(new_val) / 100

        df_2 = pd.read_csv("sales_data_types.csv",dtype={"Customer_Number":"int"},converters={
            "2016":convert_currency,
            "2017":convert_currency,
            "Percent Growth":convert_percent,
            "Jan Units":lambda x:pd.to_numeric(x,errors="coerce"),
            "Active":lambda x: np.where(x=="Y",True,False)})

输出
        to_csv('finally.csv',encoding='gb2312')#输出excel格式
    

显示列
    #显示所有列
    pd.set_option('display.max_columns', None)
    oo.columns.values                                #显示所有列名
    print([column for column in oo])                #显示所有列名
    
    oo.columns=oo.columns.str.strip()                #除列名中的空格
    oo = oo.rename(columns=lambda x: x.replace(" ","").replace("      ","").replace("\t","").replace("\n",""))    #除列名中的空格以及特殊字符
    
    oo['City']
    oo.city            --没有空格方可显示
    type(oo[['City','Sport','Event']])
    oo[['City','Sport','Event']].tail()
    oo.TS_NAME.str.len()                        #列长度
    oo.TS_NAME.str.strip()                        #某列里面字符串里面的空格  lstrip()表示去除左边空格  rstrip()表示去除左边空格  strip()表示去除左右两边,当中的空格仍在:
    oo['Sales'].str.replace(' ','')                #用replace 可以替换所有的空格:
    

显示行
    #设置value的显示长度为100,默认为50
    pd.set_option('max_colwidth',100)
    #显示所有行
    pd.set_option('display.max_rows', None)
    type(oo.iloc)
    type(oo.iloc[2])   显示第三行
    oo.drop_duplicates(['name'])            #以name删除重复行

总体信息显示
    oo.shape
    oo.shape[0]
    oo.shape[1]
    oo.head(10)
    oo.tail(10)
    oo.info()  --数据的描述 显示字段,数据类型, 使用内存大小,行数
    oo.dtypes
    type(oo.Edition)
 
删除行,列
    drop方法的用法:drop(labels, axis=0, level=None, inplace=False, errors='raise')
        --  axis为0时表示删除行,axis为1时表示删除列
        --    drop默认对原表不生效,如果要对原表生效,需要加参数:inplace=True
        --  通过labels来控制删除行或列的个数,如果是删多行/多列,需写成labels=[1,3],不能写成labels=[1:2],用:号会报错
        df2=df1.drop(labels=0)   # axis默认等于0,即按行删除,这里表示按行删除第0行
        df2=df1.drop(labels=[1,3],axis=0)   # axis=0 表示按行删除,删除第1行和第3行
        df2=df1.drop(labels=range(1,4),axis=0)   # axis=0 表示按行删除,删除索引值是第1行至第3行的正行数据
        df3=df1.drop(labels='gender',axis=1)  # axis=1 表示按列删除,删除gender列        
        df4=df1.drop(labels=['gender',"age"],axis=1)  # axis=1 表示按列删除,删除gender、age列
格式转换
        .astype("int")
        .astype('float')
        .astype('bool')
        .apply(lambda x: x.replace(",","").replace("$","")).astype("float64")
        
        pd.to_numeric(df["Jan Units"],errors='coerce').fillna(0)            # pandas中pd.to_numeric()处理Jan Units中的数据
        pd.to_datetime(df[['Month', 'Day', 'Year']])                        # 最后利用pd.to_datatime()将年月日进行合并
        
        oo[['TS_SIZE_MB','TS_USED_MB','TS_FREE_MB','PCT_USED']]=oo[['TS_SIZE_MB','TS_USED_MB','TS_FREE_MB','PCT_USED']].astype('float')
        
        def convert_currency(var):
            """
            convert the string number to a float
            _ 去除$
            - 去除逗号,
            - 转化为浮点数类型
            """
            new_value = var.replace(",","").replace("$","")
            return float(new_value)
           

posted on 2020-06-03 23:32  InnoLeo  阅读(183)  评论(0编辑  收藏  举报