zoukankan      html  css  js  c++  java
  • pandas 常用方法使用示例

    from pandas import DataFrame
    import numpy as np
    import pandas as pd
    
    t={
        "age": [18, 30, np.nan, 40, np.nan, 30],
        "city": ["BeiJing", "ShangHai", "GuangZhou", "ShenZhen", 'BeiJing', "ShangHai"],
        "sex": [None, "male", "female", "male", np.nan, "unknown"],
        "birth": ["2000-02-10", "1988-10-17", None, "1978-08-08", np.nan, "1988-10-17"],
        "score":[11,7,33,44,22,33],
        "naem":['sdf','aa','bb','tt','ere','tt'],
        "name":['sdf 11','aa 22','bb 33','tt 44','ere 55','tt 66']
    }
    
    df =DataFrame(t)
    cc=df.isnull().sum()  #每列none的个数,不是count(),count()求出来的值不对呦
    print(df[df.age.notnull()]) # isnull()
    df.dropna() #删除none所在行
    df1=df['score']
    df1.index=['a','b','c','d','e','f'] # 为series定义新的索引
    df1.name='aiyou'
    print(df1[df1<22]) # 对 series 进行过滤
    print(df1[['a','c']]) # 获取两个元素
    print((df1[:3]))  # 对series切片
    print((df1+2))   # series 给每个元素加2
    print(df1.to_frame()) #series 变成 dataframe
    print(df1['a']) # 可以将series当做dict使用,series的index就是dict的key
    print(df.loc[[1,2],['age']])  # 查询指定的行和列
    # 访问行用loc 或 iloc
    print(df[(df.age>0)&(df.age<40)])
    print(df[(df.age>0)&(df.age<40)][['age']])# 查询特定的行和列
    print(df.count()) # 非空的个数
    print(df.sum()) # 非空的个数

    del df['naem'] #删除一列 print(df.pop(
    'naem')) # 删除一列,返回值是删除的这列,原来的df发生了变化 print(df.drop('age',axis=1))# 删除一列,返回值是后的结果,原来的df没发生变化 print(df[['age','score']]) # print(s6+s7) s6和s7是两个series,s6中不存在g索引,s7中不存在e索引,所以数据运算会产生两个缺失值NaN clonedf=df.assign(age_add_one = df["age"] + 1) #在克隆df的同时再加上一列 如果想要保证原有的 DataFrame 不改变的话,我们可以通过 assign 方法来创建新的一列 print(clonedf) df['age_code']= np.where(df["age"] >22, 1, 0) # 根据某列的值,产生新的一列 df['age']=np.where(df['age']<df['score'],df['score'],df['age']) print(type(df[['age']])) # DataFram print(type(df['age'])) # Series print(df.shape) print(df.head(2)) # 查看前两行数据 print(df.tail(2)) print(df['age'].value_counts()) # 获取某列中每个值出现的次数 print(df.sort_index(ascending=False)) # 按索引排序 print(df.sort_values(by=['age','age_code'])) #按值排序 print(df['age'].idxmax()) #获取最大值的索引 print(df['age'].idxmin()) # 获取最小值的索引 ''' map 是 Series 中特有的方法,通过它可以对 Series 中的每个元素实现转换 apply 方法既支持 Series,也支持 DataFrame,在对 Series 操作时会作用到每个值上,在对 DataFrame 操作时会作用到整行或整列(通过 axis 参数控制)。 applymap 方法针对于 DataFrame,它作用于 DataFrame 中的每个元素,它对 DataFrame 的效果类似于 apply 对 Series 的效果 ''' df['age'] = df['age'].combine_first(df['score']) # 利用另一列的值填补此列的None print(df.rename(index={1: "tom", 3: "bob"})) #修改索引 print(df.rename(columns={"age": "Age", "city": "City", "sex": "Sex"})) #修改列名 print(df["age"].astype(float)) # 转换数据类型 print(pd.to_numeric(df.age, errors="ignore")) # errors='raise',这意味着强转失败后直接抛出异常,设置 errors='coerce' 可以在强转失败时将有问题的元素赋值为 pd.NaT(对于datetime和timedelta)或 np.nan(数字)。设置 errors='ignore' 可以在强转失败时返回原有的数据 print(df.age.nlargest(2)) # 获取最大的n个值或最小值的n个值,我们可以使用 nlargest 和 nsmallest 方法来完成,这比先进行排序,再使用 head(n) 方法快得多 df["birth"] = pd.to_datetime(df.birth) # 把数据类型转成时间 print(df.city.str.upper()) # print(df.city.str.len()) user_info.city.str.replace(" ", "_") str 方法的使用 print(df.name.str.split(' ').str.get(1)) # 对字段进行分割
    df["total"] = df['total'].astype(str).str.split('.').str.get(0) #将Timestamp类型的转成str类型,然后再split,再get
    df[['name1','name2']]=df.name.str.split(' ', expand=True) # 根据一列生成两列 print(df[df.city.str.contains("Zh")]) # 是否包含某个关键字 print(df.dropna(axis=0, how="any", subset=["city", "sex"])) # thresh=3,会在一行/列中至少有 3 个非空值时将其保留。 df.age.fillna(0) print(df.replace({"age": 40, "birth": pd.Timestamp("1978-08-08")}, np.nan)) # 将age列为40的替换成nan,将birth列为1978-08-08的替换成nan print(df.city.replace(r's+', np.nan, regex=True))

    窗口函数:
    df2.rolling(window=2, on="date", min_periods=1).sum() #计算每两条记录的和
    df2.expanding(min_periods=1)["turnover"].sum() #累加和的计算,turnover为列名
    df2.rolling(window=2, min_periods=1)["turnover"].agg([np.sum, np.mean]) #同时计算出多个统计值用agg

     转换时区:

    ts=pd.date_range("2018-6-26 07:00:00", periods=8)
    print(ts)
    ts_utc = ts.tz_localize('UTC')
    print(ts_utc)
    ts_ea=ts_utc.tz_convert('US/Eastern')
    print(ts_ea)
     
  • 相关阅读:
    线性时间选择
    ios理解 Pro Mutlithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks
    ef
    c# 采集 获取网页数据内容 一会超时的问题
    entity4.1
    逐渐约束
    entity4.1
    ObjectContext.Refresh
    使用内存表
    MVCdropdownlist
  • 原文地址:https://www.cnblogs.com/testzcy/p/12077820.html
Copyright © 2011-2022 走看看