zoukankan      html  css  js  c++  java
  • pandas基础操作

    来自实验楼《Pandas百题大冲关》,刷到一半当笔记记了

    没有参考价值,见原链接https://www.shiyanlou.com/courses/running

    创建DataFrame数据类型

    通过Numpy数组创建DataFrame

    import numpy as np
    import pandas as pd
    dates = pd.date_range('today', periods=6)  # 定义时间序列作为 index
    num_arr = np.random.randn(6, 4)  # 传入 numpy 随机数组
    columns = ['A', 'B', 'C', 'D']  # 将列表作为列名
    df1 = pd.DataFrame(num_arr, index=dates, columns=columns)
    df1

    通过字典数组创建DF

    data = {'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
            'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],
            'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
            'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']}
    
    labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
    df2 = pd.DataFrame(data, index=labels)
    df2

    查看DF数据类型

    df2.dtypes

    预览DF的前后几行数据

    df2.head()
    
    df2.tail(3)

    查看索引

    df2.index

    查看列名

    df.columns

    查看数值

    df.values

    查看统计数据

    df2.describe()
    
    age    visits
    count    8.000000    10.000000
    mean    3.437500    1.900000
    std    2.007797    0.875595
    min    0.500000    1.000000
    25%    2.375000    1.000000
    50%    3.000000    2.000000
    75%    4.625000    2.750000
    max    7.000000    3.000000

    转置操作

    df2.T
    
    a    b    c    d    e    f    g    h    i    j
    animal    cat    cat    snake    dog    dog    cat    snake    cat    dog    dog
    age    2.5    3    0.5    NaN    5    2    4.5    NaN    7    3
    visits    1    3    2    3    2    3    1    1    2    1
    priority    yes    yes    no    yes    no    no    no    yes    no    no

    按列排序

    df2.sort_values(by='age')

    切片

    df2[1:3]
    
    animal    age    visits    priority
    b    cat    3.0    3    yes
    c    snake    0.5    2    no

    通过标签查询(列)

    df2['age']    #或者df2.age

    查询多列

    df2[['age','animal']]

    通过位置查询

    df2.iloc[1:3]
    
        animal    age    visits    priority
    b    cat    3.0    3    yes
    c    snake    0.5    2    no

    副本拷贝

    df3 = df2.copy()

    判断是否为空

    df3.isnull()
    
    animal    age    visits    priority
    a    False    False    False    False
    b    False    False    False    False
    c    False    False    False    False
    d    False    True    False    False
    e    False    False    False    False
    f    False    False    False    False
    g    False    False    False    False
    h    False    True    False    False
    i    False    False    False    False
    j    False    False    False    False

    这里可以用isany()来得到空行/列或者空值个数

    添加列数据

    num = pd.Series([0,1,2,3,4,5,6,7,8,9],index=df3.index)
    df3['No.'] = num

    根据下标值进行更改

    # 修改第 2 行与第 1 列对应的值 3.0 → 2.0
    df3.iat[1, 0] = 2  # 索引序号从 0 开始,这里为 1, 0

    根据标签进行修改

    df3.loc['f','age'] = 1.5

    求平均值

    df3.mean()
    
    age       3.4375
    visits    1.9000
    No.       4.5000
    dtype: float64

    对列求和

    df3['visits'].sum()

    将字符串转为大小写

    string = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca',
                        np.nan, 'CABA', 'dog', 'cat'])
    print(string)
    string.str.lower()
    string.str.upper()

    DataFrame缺失值操作

    对缺失值进行填充

    df4 = df3.copy()
    print(df4)
    df4.fillna(value=3)

    删除存在缺失值的行

    df5 = df3.copy()
    print(df5)
    df5.dropna(how='any')

    按指定列对齐

    left = pd.DataFrame({'key': ['foo1', 'foo2'], 'one': [1, 2]})
    right = pd.DataFrame({'key': ['foo2', 'foo3'], 'two': [4, 5]})
    
    print(left)
    print(right)
    
    # 按照 key 列对齐连接,只存在 foo2 相同,所以最后变成一行
    pd.merge(left, right, on='key')

    文件操作

    csv文件写入

    df3.to_csv('animal.csv')
    print("写入成功.")

    csv读取

    df_animal = pd.read_csv('animal.csv')
    df_animal

    excel文件写入、读取

    df3.to_excel('animal.xlsx', sheet_name='Sheet1')
    print("写入成功.")
    
    pd.read_excel('animal.xlsx', 'Sheet1', index_col=None, na_values=['NA'])
  • 相关阅读:
    Android中Tomcat的简单配置和使用
    Android Toast 总结(五种用法)
    软件工程—软件开发生命周期
    Android四大组件之BroadcastReceiver
    Android之 Fragment
    Android 四大组件之Acticity
    java 注解Annotation
    Android Intent的使用
    Android 调用webService(.net平台)
    关于TouchEvent中出现异常:MessageQueue-JNI问题
  • 原文地址:https://www.cnblogs.com/1113127139aaa/p/10071518.html
Copyright © 2011-2022 走看看