pandas_01_pandas基础

本文介绍了Pandas库中的核心数据结构Series和DataFrame,包括它们的创建、索引、切片和数据操作。展示了如何通过索引和位置获取数据,排序、切片、筛选以及读取外部数据。还讲解了处理缺失数据的方法,如检查、删除和填充NaN。此外,还涵盖了数据统计和信息查询,如`describe()`和`info()`函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接

常用数据类型

  1. Series 一维,带标签(索引)数组

    t = pd.Series([random.randint(0, 10) for i in range(5)], index=list("abcde"))
    
    a    10
    b     0
    c     3
    d     9
    e     7
    dtype: int64
    

    或通过字典创建Series

    a = {"name": "小李", "age": 18, "tele": "187888"}
    t1 = pd.Series(a)
    print(t1)
    
    name        小李
    age         18
    tele    187888
    dtype: object
    

    可以通过索引和位置来取数据。

    print(t[1: 4])
    print(t[[1, 3, 4]])
    print(t[["a", "c"]])
    print(t[t > 5])
    print(t.index, t.values)
    
    b    7
    c    3
    d    8
    dtype: int64
    b    7
    d    8
    e    2
    dtype: int64
    a    8
    c    3
    dtype: int64
    a    8
    b    7
    d    8
    dtype: int64
    Index(['a', 'b', 'c', 'd', 'e'], dtype='object') [8 7 3 8 2]
    
  2. DataFrame 二维,Series容器

    t = pd.DataFrame(np.arange(12).reshape((3, 4)), index=list("abc"), columns=list("ABCD"))
    print(t)
    
    # 输出
       A  B   C   D
    a  0  1   2   3
    b  4  5   6   7
    c  8  9  10  11
    

    或通过字典创建DataFrame

    # 法1
    a = {"name": ["小明", "小李"], "age": [18, 19], "tel": ["18721", "13999"]}
    t1 = pd.DataFrame(a)
    print(t1)
    
    # 法2
    b = [{"name": "大明", "age": 18}, {"name": "大李", "age": 20}]
    t2 = pd.DataFrame(b)
    print(t2)
    
      name  age    tel
    0   小明   18  18721
    1   小李   19  13999
    
      name  age
    0   大明   18
    1   大李   20
    

    DataFrame对象既有行索引,又有列索引

    行索引,表明不同行,横向索引,叫index,0轴,axis=0

    列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

    DataFrame的基本属性:

    1. df.shape # 行数 列数
    2. df.dtypes # 列数据类型
    3. df.ndim # 数据维度
    4. df.index # 行索引
    5. df.columns # 列索引
    6. df.values # 对象值,二维ndarray数组

    DataFrame整体情况查询:

    1. df.head(3) # 显示头部几行,默认5
    2. df.tail(3) # 显示末尾几行,默认5
    3. df.info() # 相关信息概览,行数、列数、列索引、列非空值个数、列类型、内存占用。
    4. df.describe() # 快速综合统计结果:计数、均值、标准差、最大值、四分位数、最小值。

    DataFrame排序:

    # by: 根据哪一列进行排序
    # ascending: 升序或降序
    t.sort_values(by="B", ascending=False)
    

    DataFrame切片索引:

    1. 方括号写数字表示取行: t[:2]

    2. 方括号写字符串表示取列: t["B"]

    3. 同时取行和列:t[:2]["B"]

      • df.loc 通过标签索引行数据

        t.loc["a", "B"]
        Out[34]: 1
        
        t.loc["a"]
        Out[37]: 
        A    0
        B    1
        C    2
        D    3
        Name: a, dtype: int32
        
        t.loc["a",:]
        Out[36]: 
        A    0
        B    1
        C    2
        D    3
        Name: a, dtype: int32
        
        t.loc[:, "B"]
        Out[38]: 
        a    1
        b    5
        c    9
        Name: B, dtype: int32
        
        t.loc[["a", "c"], ["A", "C"]]
        Out[39]: 
           A   C
        a  0   2
        c  8  10
        
      • df.iloc 通过位置获取行数据

      通过这种方法也可以进行赋值。

    4. 布尔索引:

      t[(t["A"] > 3) & (t["B"] < 9)]
      Out[52]: 
         A  B  C  D
      b  4  5  6  7
      

读取外部数据

# pandas读取csv文件
df = pd.read_csv("./XXX.csv")

缺失数据处理

判断是否为nan:pd.isnull(t)
       A      B      C      D
a  False  False  False  False
b  False   True   True  False
c  False   True   True  False
判断是否不为nan:pd.notnull(t)
      A      B      C     D
a  True   True   True  True
b  True  False  False  True
c  True  False  False  True
删除包含nan所在的行或列
# axis=0表示删除有nan的行,axis=1表示删除有nan的列
# how="any"表示有一个nan就删,how="all"表示全部为nan就删
# inplace=False表示不进行原地修改,=True表示进行原地修改

t.dropna(axis=0, how="any")
填充nan所在的位置
t.fillna(t.mean())
# 或者只填充一列
t["B"].fillna(t["B"].mean())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值