panda 第二节(常用操作)

本文深入讲解了使用Python的Pandas库进行数据处理的方法,包括DataFrame的创建、索引、切片、排序、数据过滤及NaN处理等核心操作,适合初学者及希望提升Pandas技能的读者。

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

# -*- coding:utf-8 -*-
import pandas as pd
import numpy as np

# DataFrame初始化 numpy.ndarray
df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=["col" + str(i) for i in range(4)], index=list("ABC"))
print(df)
# DataFrame初始化 字典 ,值个数必须一致,其中键做为列名
dic = {"name": ["xiaoming", "xiaohong"], "age": [18, 20], "sex": ["M", "F"]}
df = pd.DataFrame(dic)
print(df)

# DataFrame初始化 列表,缺省值为NaN,列名为字典key
dic = [{"name": "xiaoming", "age": 18, "sex": "F"}, {"name": "xiaohong", "age": 20}]
df = pd.DataFrame(dic)
print(df)
print(df.index)  # RangeIndex(start=0, stop=2, step=1)
print(df.columns)  # Index(['name', 'age', 'sex'], dtype='object')
print(df.values)
print(df.dtypes)  # name    object / age      int64 /sex     object
print(df.shape)  # (2, 3)
print(type(df.values))  # <class 'numpy.ndarray'>
print(df.ndim)  # 表示维度 2
print(df.head())  # 默认前5行
print(df.tail())  # 默认后5行
print("*" * 50)
print(df.info())  # 相关信息概述
print(df.describe())  # 计算数字类型的字段的指标
# 排序
df = df.sort_values(by="age", ascending=False)
print(df)

''' 
df = pd.read_csv("test.csv")
print(type(df))  # <class 'pandas.core.frame.DataFrame'>
print(df)
'''
# DataFrame 切片
df = pd.DataFrame(np.random.randint(10, 100, (6, 6)))
df.columns = ["col" + str(i) for i in range(6)]
print(df)
print(df["col1"])  # 取列 pandas.core.series.Series
print(df[:3])  # 取行  pandas.core.frame.DataFrame
# 同时取行取列
print(df[:3][["col1", "col2"]])
print("*" * 50)
# loc 通过标签索引获取数据
print(df.loc[0, "col1"])
print(df.loc[[0, 2], ["col1", "col3"]])
print(df.loc[0:2, ["col1", "col3"]])  # 注意:行中冒号后面的也是能选到的,前闭后闭

# iloc 通过位置坐标获取数据
print(df.iloc[1, 1])
print(df.iloc[1:3, 2:3])  # 注意:行中冒号后面的不能选到的,前闭后开

# 数据过滤
print(df[df["col1"] > 50])  # 布尔索引 返回满足条件的行列数据
df[(df["col1"] > 50) & (df["col1"] < 80)]  # 多条件用括号,&链接
# 转换成字符串
df.iloc[:, 1] = "a/b/c"
df["col1"].str.split("/")
# NaN处理
df.iloc[3, 4] = np.nan
pd.isnull(df)
print(df[pd.notnull(df["col4"])])  # col4中不为NaN的数据

df.dropna(axis=0, how="any")  # 删除存在有NaN的行
df.dropna(axis=0, how="all")  # 删除存整行都是NaN的行
df.fillna(100)  # 替换NaN为100
df.fillna(df.mean())  # 替换NaN为当前列的平均值


df.iloc[3,:][df.iloc[3,:]==94]=100

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值