• python常用模块-pandas


    20200927  python文件处理 numpy pandas

    001------ numpy

    zip----入参为两个列表,常为数组,返回元组列表,以短为准;

    NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
    Python自带的list在使用中更加耗时。使用numpy将大大提高代码的运行速度。。

    numpy 常用:

    数组
    a = np.array([]) #尽量装相同数据类型,不然输出时部分值可能变化
    b = np.array([])
    a = np.array([[ 1, 2, 9, 4, 3],
    [ 0, 5, 3, 5, 1],
    [ 8, 3, 2, 4, 7]])
    支持 + 、-、 *(对应元素*)、 / 、 **对应元素;


    矩阵:
    d = np.eye(5)
    矩阵修改:d[2,3]=6

    ndim(维度)
    shape(各维度长度)返回一个元组,列出每个维度的数组长度。 行长列长

    我们可以通过dtype来查看numpy数组元素的数据类型。

    fill(填充)以指定的元素填充数组。

    reshape(重塑)在不改变原数据的情况下,重新按指定形状生成数组;另外赋值,重塑不改变原序列
    a = np.arange(36).reshape(6,6)
    b = np.arange(36).reshape(6,1,6)

    where(条件,[x,y])
    返回根据条件从x或y中选择的元素。
    a = np.array([[1, 2], [3, 4]])
    b = np.array([[9, 8], [7, 6]])
    mask = np.array([[1, 0], [0, 1]], dtype=bool) # 1,0 当前元素排列对应二维数组的顺序
    c = np.where(mask, a, b) # 11,10,01,00
    print(c)
    # [[1 8]
    # [7 4]]

    numpy数组切片和python基本上是一样的。

    多维切片
    以二维数组为例,先在行切片,找到指定行后再列切片。你可以简单理解为在不同维度切片后重叠区域
    b[1,3:5]
    b[0:2,0:2]

    20200927-02 python文件处理 numpy pandas

    002------ pandas
    1.
    df.to_csv 写入到 csv 文件
    pd.read_csv 读取 csv 文件
    df.to_json 写入到 json 文件
    pd.read_json 读取 json 文件
    df.to_html 写入到 html 文件
    pd.read_html 读取 html 文件
    df.to_excel 写入到 excel 文件
    pd.read_excel 读取 excel 文件

    2.导入CSV或者xlsx文件
    df = pd.DataFrame(pd.read_csv('name.csv',header=1))
    df = pd.DataFrame(pd.read_excel('name.xlsx'))

    3.查看
    df.info()
    df.dtypes
    df.values 查看数据表的值
    df.shape
    df.columns 查看列名称
    df.head() #默认前10行数据
    df.tail() #默认后10 行数据
    df['B'].unique() 查看某一列的唯一值
    df.isnull()
    a.mean() 列表a 的均值

    4.数据表清洗
    df.fillna(value=0) 用数字0填充空值
    df['prince'].fillna(df['prince'].mean()) 使用列prince的均值对NA进行填充:
    df['price'].astype('int') 更改数据格式
    df['city'].replace('sh', 'shanghai') 数据替换
    df.rename(columns={'category': 'category-size'}) 更改列名称

    5. 数据预处理
    创建表:
    df = pd.DataFrame({"id":[1001,1002,1003,1004,1005],
    "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai'],
    "age":[23,44,54,32],
    columns =['id','city','age'])

    df = pd.DataFrame(list_l, index=date_range,
    columns=['a', 'b', 'c', 'd', 'e'])


    df = pd.DataFrame({"column1":[valuelist1],"column2":[valuelist2]},columns=['column1','column2'])

    6. 数据处理
    写入文件:
    df_inner.to_csv('excel_to_python.csv')
    df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')
    表合并:
    df_inner=pd.merge(df,df1,how='inner') # 匹配合并,交集
    df_left=pd.merge(df,df1,how='left') #
    df_right=pd.merge(df,df1,how='right')
    df_outer=pd.merge(df,df1,how='outer') #并集

    df_inner.set_index('id') 设置索引列
    df_inner.sort_values(by=['age']) 按照特定列的值排序
    df_inner.sort_index() 按照索引列排序

    df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low') 如果prince列的值>3000,group列显示high,否则显示low

    7. 数据提取

    df_inner.loc[3]
    df_inner.iloc[0:5]
    df_inner.reset_index()
    df_inner=df_inner.set_index('date')
    df_inner[:'2013-01-04'] 提取4日之前的所有数据
    df_inner.iloc[:3,:2] #冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。
    df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列
    df_inner.ix[:'2013-01-03',:4] #2013-01-03号之前,前四列数据
    df_inner['city'].isin(['beijing'])
    df_inner.loc[df_inner['city'].isin(['beijing','shanghai'])]
    pd.DataFrame(category.str[:3]) 提取前三个字符,并生成数据表

    8. 数据筛选
    使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。
    df_inner.loc[(df_inner['age'] > 25) & (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']]

    df_inner.loc[(df_inner['age'] > 25) | (df_inner['city'] == 'beijing'), ['id','city','age','category','gender']].sort(['age'])

    df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id'])

    df_inner.loc[(df_inner['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id']).city.count()

    df_inner.query('city == ["beijing", "shanghai"]') 使用query函数进行筛选

    df_inner.query('city == ["beijing", "shanghai"]').price.sum() 对筛选后的结果按price进行求和

    9. 数据汇总
    df_inner.groupby('city').count() 对所有的列进行计数汇总
    df_inner.groupby('city')['id'].count() 按城市对id字段进行计数
    df_inner.groupby(['city','size'])['id'].count() 对两个字段进行汇总计数
    df_inner.groupby('city')['price'].agg([len,np.sum, np.mean]) 对city字段进行汇总,并分别计算prince的合计和均值

    10. 数据统计
    df_inner.sample(n=3) 简单的数据采样
    weights = [0, 0, 0, 0, 0.5, 0.5]
    df_inner.sample(n=2, weights=weights) 手动设置采样权重
    df_inner.sample(n=6, replace=False) 采样后不放回
    df_inner.sample(n=6, replace=True) 采样后放回
    df_inner['price'].std() 计算列的标准差
    df_inner.cov() 数据表中所有字段间的协方差
    df_inner.corr() 数据表的相关性分析

    11. 数据输出

    df_inner.to_excel('excel_to_python.xlsx', sheet_name='bluewhale_cc')

    df_inner.to_csv('excel_to_python.csv')


    df.to_csv 写入到 csv 文件
    pd.read_csv 读取 csv 文件
    df.to_json 写入到 json 文件
    pd.read_json 读取 json 文件
    df.to_html 写入到 html 文件
    pd.read_html 读取 html 文件
    df.to_excel 写入到 excel 文件
    pd.read_excel 读取 excel 文件


    DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True,
    index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"',
    line_terminator=' ', chunksize=None, tupleize_cols=None, date_format=None, doublequote=True,
    escapechar=None, decimal='.')

    index_label : 索引的列标签名
    index : 是否保存索引,默认为 True ,保存
    header : 是否保存列名,默认为 True ,保存
    path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json
    sep : 输出文件的字段分隔符,默认为 “,”
    na_rep : 用于替换空数据的字符串,默认为''
    float_format : 设置浮点数的格式(几位小数点)
    columns : 要写的列

    插入列;把allow_duplicates设置为True,可实现重复列的插入
    df4 = df2.insert(0,'inss',range(71,78))
    #df4 none df2 update

    df2['插入']=list1 ;也可以直接在最后一列插入数据(dataframe或read_csv,总之表可以直接插入)

    df3.loc[3] = '111'; 一行全改;
    df3.loc[2,'id'] = '222' ; 改一个值,定位内为某行、某列,即行名,列名;


    df.info() #查看数据类型
    df.shape #查看数据规模
    df.describe() #数据统计信息描述

  • 相关阅读:
    Oracle重建表索引及手工收集统计信息
    VirtualBox虚拟机安装MSDOS和MINIX2.0.0双系统
    odp.net以及oracle oledb安装
    Oralce常用维护命令
    Sales_item
    IBM MQ Reason 2538(MQRC_HOST_NOT_AVAILABLE) 错误原因一例
    Unable to create the store directory. (Exception from HRESULT: 0x80131468)
    WMS函数组:13.WMS入库BAPI
    WMS函数组:12.批量入库物料移动凭证
    WMS函数组:11.交货单取金额
  • 原文地址:https://www.cnblogs.com/bernard-shen/p/14463291.html
Copyright © 2020-2023  润新知