Pandas 基础

    xiaoxiao2023-06-12  165

    Pandas 简介

    Pandas 库基于 NumPy 构建,为 Python 编程语言提供易于使用的数据结构和数据分析工具。

    使用以下约定导入 Pandas

    import pandas as pd

    帮助

    help(pd.Series.loc)

    Pandas 数据结构

    序列(Series)

    能够保存任何数据类型的一维标记数组

    s = pd.Series([1, 3, 5, 7], index=['天', '地', '玄', '黄']) # 左侧一列为索引 s

    天 1 地 3 玄 5 黄 7 dtype: int64

    数据框(DataFrame)

    不同类型列的二维标记数据结构,类似 Excel 表格

    上面一行为列名

    左侧一列为索引

    -姓名民族姓别年龄1贾小武汉男32贾小久汉男13张小鸭汉女- data = {'姓': ['贾', '贾', '张'], '名': ['小武', '小久', '小鸭́'], '民族': ['汉', '汉', '汉'], '年龄': [3, 1, None]} data

    {‘姓’: [‘贾’, ‘贾’, ‘张’], ‘名’: [‘小武’, ‘小久’, ‘小鸭́’], ‘民族’: [‘汉’, ‘汉’, ‘汉’], ‘年龄’: [3, 1, None]}

    df = pd.DataFrame(data, columns=['姓', '名', '年龄']) df -姓名民族姓别年龄1贾小武汉男32贾小久汉男13张小鸭汉女-

    文件 I / O

    读写 CSV

    pd.read_csv('file.csv', header=None, nrows=5) df.to_csv('myDataFrame.csv')

    读写 Excel

    pd.read_excel('file.xlsx') pd.to_excel('dir/myDataFrame.xlsx', sheet_name='Sheet1') xlsx = pd.ExcelFile('file.xls') df = pd.read_excel(xlsx, 'Sheet1')

    读取数据库

    from sqlalchemy import create_engine engine = create_engine('sqlite:///:memory:') pd.read_sql("SELECT * FROM my_table;", engine) pd.read_sql_table('my_table', engine) pd.read_sql_query("SELECT * FROM my_table;", engine)

    read_sql() 是 read_sql_table() 和 read_sql_query() 的便捷包装器

    pd.to_sql('myDf', engine)

    选择

    获取

    # 获取 1 个数据 s['天']

    1

    # 获取 DataFrame 的子集 df[1:]

    选择,布尔索引 & 设置

    位置

    按行和列选择单个值

    df.iloc[[0], [1]] df.iat[0, 1]

    ‘小武’

    标签

    按行和列标签选择单个值

    df.loc[0, '姓']

    ‘贾’

    df.at[0, '姓']

    ‘贾’

    布尔索引

    s[~(s > 1)]

    天 1 dtype: int64

    s[(s < -1) | (s > 2)]

    地 3 玄 5 黄 7 dtype: int64

    df[df['年龄']>1]

    设置

    将序列 s 的索引 ‘宇’ 设置为 9

    s['宇'] = 9 s

    天 1 地 3 玄 5 黄 7 宇 9 dtype: int64

    删除(dropping)

    从行中删除值(axis = 0)

    s.drop(['天', '地'])

    玄 5 黄 7 宇 9 dtype: int64

    从列中删除值(axis = 1)

    df.drop('姓', axis=1)

    排序和排名

    按轴标签排序

    df.sort_index()

    按轴的值排序

    df.sort_values(by='年龄')

    从小到大排序的下标

    df.rank()

    检索 Series / DataFrame 信息

    基本信息

    df = pd.DataFrame([[1, 2], [4, 5], [7, 8]], index=['cobra', 'viper', 'sidewinder'], columns=['max_speed', 'shield'])

    (行,列)

    df.shape

    (3, 2)

    描述索引

    df.index

    Index([‘cobra’, ‘viper’, ‘sidewinder’], dtype=‘object’)

    描述 DataFrame 列信息

    df.columns

    Index([‘max_speed’, ‘shield’], dtype=‘object’)

    DataFrame 信息

    df.info()

    非 NA 值的数量

    df.count()

    max_speed 3 shield 3 dtype: int64

    摘要

    总和

    df.sum()

    max_speed 12 shield 15 dtype: int64

    累积值

    df.cumsum()

    最小值

    df.min()

    max_speed 1 shield 2 dtype: int64

    最大值

    df.max()

    max_speed 7 shield 8 dtype: int64

    最小索引值

    df.idxmin()

    max_speed cobra shield cobra dtype: object

    最大索引值

    df.idxmax()

    max_speed sidewinder shield sidewinder dtype: object

    摘要统计

    df.describe() 均值 ```python df.mean()

    max_speed 4.0 shield 5.0 dtype: float64

    中位数

    df.median()

    max_speed 4.0 shield 5.0 dtype: float64

    应用函数

    f = lambda x: x*2

    应用函数

    df.apply(f)

    按元素应用函数

    df.applymap(f)

    数据对齐

    内部数据对齐

    值 NA 在不重叠的索引中引入

    s3 = pd.Series([7, -2, 3], index=['玄', '黄', '宇']) s + s3

    地 NaN 天 NaN 宇 12.0 玄 12.0 黄 5.0 dtype: float64

    填充方法的算术运算

    借助填充方法自行完成内部数据对齐

    s.add(s3, fill_value=0)

    地 3.0 天 1.0 宇 12.0 玄 12.0 黄 5.0 dtype: float64

    s.sub(s3, fill_value=2)

    地 1.0 天 -1.0 宇 6.0 玄 -2.0 黄 9.0 dtype: float64

    s.div(s3, fill_value=4)

    地 0.750000 天 0.250000 宇 3.000000 玄 0.714286 黄 -3.500000 dtype: float64

    s.mul(s3, fill_value=3)

    地 9.0 天 3.0 宇 27.0 玄 35.0 黄 -14.0 dtype: float64

    ipynb 请查看:https://github.com/iOSDevLog/AIDevLog/blob/master/Python 基础/PandasBasic.ipynb

    最新回复(0)