• pandas常用操作


    数据导入和导出

    # 导入
    pd.read_csv("z:/data.csv", low_memory=True,encoding="utf-8",sep=",")#读取csv文件内容
    pd.read_table(file_name)    #从限定分隔符的文本文件导入数据
    pd.read_excel(file_name)    #从Excel文件导入数据
    pd.read_sql(query, connection_object) #从SQL表/库导入数据
    pd.read_json(json_string)   #从JSON格式的字符串导入数据
    pd.read_html(url)       #解析URL、字符串或者HTML文件,抽取其中的tables表格
    pd.DataFrame(dict)        #从字典对象导入数据,Key是列名,Value是数
    # 导出
    df.to_csv("z:/data_new.csv", index=False)    #不保存行索引,默认行列索引True
    df.to_excel(filename)               #导出数据到Excel文件
    df.to_sql(table_name, connection_object)     #导出数据到SQL表
    df.to_json(filename)                 #以Json格式导出数据到文本文件

    显示数据内容

    df.head(n)    # 前n行数据,默认5
    df.tail(n)    # 后n行数据,默认5
    df.shape()    # 形状
    df.info()    # 显示索引、数据类型和内存信息
    df.describe()    # 显示数值型列的汇总统计
    df.columns.values    # 显示所有列名称(值)
    df.columns.tolist()    # 显示所有列名称(列表形式)
    # set_option
    pd.set_option('display.max_columns', None)    #显示所有列(不忽略)
    pd.set_option('display.max_rows', None)    #显示所有行(不忽略)
    pd.set_option('chop_threshold', 0.5)    # 绝对值小于0.5的显示0.0
    pd.set_option('colheader_justify', 'left')#显示居中还是左边
    pd.set_option('precision', 5)    #显示小数点后的位数
    pd.set_option('expand_frame_repr', False)#True就是可以换行显示
    pd.set_option('display.width', 200) #横向最多显示多少个字符

    创建数据

    pd.DataFrame(np.random.rand(200,10)) #创建200行10列的随机0-1之间的数组成的DataFrame对象
    pd.Series(list)    #从可迭代Series对象

    统计

    df.value_counts(sort=True))   #统计该字段的唯一内容数量
    df.describe()                 #查看数据值列的汇总统计
    df.mean()                     #所有列的均值
    df.corr()                     #列与列之间的相关系数
    df.count()                    #每一列中的非空值的个数
    df.max()                      #每一列的最大值
    df.min()                      #每一列的最小值
    df.median()                   #每一列的中位数
    df.std()                      #每一列的标准差

     数据切分与合并

    # 切分
    df[col]             #根据列名,并以Series的形式返回列
    df[[col1, col2]]    #以DataFrame形式返回多列
    df.iloc[0,:]        #第一行
    df.iloc[:,0]        #第一列
    df.iloc[:,:100]     #前100列
    df.iloc[0,0]        #第一列的第一个元素
    # 合并
    df1.append(df2)                 #将df2中的行添加到df1的尾部
    pd.concat([df1, df2],axis=1)    #将df2中的列添加到df1的尾部

    筛选

    df[["year","month","day"]]        # 筛选年月日三个列
    df.loc[df["year"] > 2014]      # 筛选2014年后的数据

    数据类型

    df_loan['int_rate'].round(0).astype(int)

    日期操作

    # 日期转换(Dec-2019==>2019-12)
    df['year'] = pd.to_datetime(df["date"]).dt.year
    df['month'] = pd.to_datetime(df["date"]).dt.month
    df['day'] = pd.to_datetime(df["date"]).dt.day

    分组操作

    df.groupby(col)    #对指定列分组
    df.groupby([col1,col2])    #多列进行分组
    df.groupby(col1)[col2]    #对col1进行分组后,列col2进行均值
    df.groupby(["issue_year", "issue_month"]).size()    # 
    df.groupby(["issue_month", "issue_year"]).mean()
    df.groupby(['issue_year', 'loan_condition']).int_rate.mean()
    df_loan.groupby("sub_grade")['int_rate'].count().index
    df.sort_values(col)    #按指定列排序数据,默认升序排序 ascending=False降序
    df.sort_values([col1,col2], ascending=[True,False]) #先按列col1升序排列,后按col2降序排列数据
    df.groupby(col1).agg(np.mean)    #按列coll分组的所有列的均值

    增删改查操作

    # 修改列的名称
    df.columns = ['a','b','c']
    df = df.rename(columns={"A": "a", "B": "b"},inplace=True)
    # 删除
    df.drop(["total_bal_ex_mort", 'tot_coll_amt', 'sub_grade'], axis=1, inplace=True)  # 删除指定
    df = df[~ df['issue_d'].str.contains('issue_d')]  # 删除指定内容的行
    df = df.loc[df["issue_d"] != "issue_d"]    # 删除指定内容的行

    数据清洗

    # 查看那些列全空值
    nan_mean = df.isna().mean()
    nan_mean = nan_mean[nan_mean != 0].sort_values()
    print(nan_mean)
    # 查看缺省
    check_null = df.isnull().sum().sort_values(ascending=False)/float(len(df))
    print(check_null[check_null > 0.2]) # 查看缺省比例大于0.2
    # 缺失值处理
    print(pd.isnull(df))          # 缺失值True,其他False
    print(np.any(pd.isnull(df)))  # 有缺失值True,没有False
    print(np.all(pd.notnull(df))) # 没有缺失True,有False
    print(pd.isnull(df).any())    # 每列是否有缺失
    print(pd.notnull(df).all())   # 每列没有缺失
    print(df.dropna())    # 删除所有的缺失值
    print(df.fillna("NULL"))  # 替换NULL
    # 替换
    data_new = df.replace("?",value=np.nan)
    print(data_new.dropna())
    # 去重
    df.drop_duplicates()
  • 相关阅读:
    ZeroMQ接口函数之 :zmq_msg_move
    ZeroMQ接口函数之 :zmq_msg_init_size
    Missing artifact org.hibernate:hibernate-core:jar:4.3.0.Final
    ezmorph将一种对象转换成另外一种对象
    Avalon Framework
    easymock单元测试跟踪工具
    pngencoder图像转换jar
    Lucene全文检索引擎
    cxf怎样提高webservice性能,及访问速度调优
    待整理-20180625
  • 原文地址:https://www.cnblogs.com/jumpkin1122/p/11517169.html
Copyright © 2020-2023  润新知