• 零基础学Python:Pandas用法


    在这里插入图片描述

    前言: 📢📢📢
    🏅🏅🏅作者简介:是Dream呀,华为云享专家、CSDN原力计划作者、Python领域优质创作者,专注分享Python领域原创系列文章。
    🌻🌻🌻热门专栏:【零基础学Python
    本课程是针对Python入门&进阶打造的一全套课程,在这里,我将会一 一更新Python基础语法、Python爬虫、Web开发、 Django框架、Flask框架以及人工智能相关知识,帮助你成为Python大神,如果你喜欢的话就抓紧收藏订阅起来吧~💘💘💘
    🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信我或者文末添加vx,拉你进群,群内有行业大佬帮大家解答疑问,我们一起学习,群内定期还会有抽奖活动和红包相送嗷,快来进入我们吧~
    💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
    💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺

    Pandas具有Series和DataFrame两个最重要的数据类型:
    Series:一维
    DataFrame:二维

    一、Series

    1.创建Series

    创建Series对象的函数是Serier(),主要参数是data和index:
    pandas.Series(data=None,index=None,name=None)
    参数说明:

    • data:接收array或者dict。表示接收的数据,默认None
    • index:接收array或者list。表示索引,必须与数据长度相等,默认None
    • name:接收string或者dict,表示Series对象的名称,默认None

    通过ndarray创建的Series

    import pandas as pd
    import numpy as np
    print('通过ndarray创建的Series为:\n',pd.Series(np.arange(3),index=['a','b','c'],name='ndarray'))
    '
    运行

    通过ndarray创建的Series为:
    a 0
    b 1
    c 2
    Name: ndarray, dtype: int32

    通过dict创建Series

    dict的键作为Series的索引,dict的作为Series的值,因此无需传入index参数。

    import pandas as pd
    dict = {'a':0,'b':1,'c':2,'d':3,'e':4}
    print('通过dict创建的Series为:\n',pd.Series(dict))
    '
    运行

    通过dict创建的Series为:
    a 0
    b 1
    c 2
    d 3
    e 4
    dtype: int64

    通过list创建Series

    import pandas as pd
    list1 = [0,1,2,3,4]
    print('通过list创建的Series为:\n',pd.Series(list1,index=['a','b','c','d','e']))
    '
    运行

    通过list创建的Series为:
    a 0
    b 1
    c 2
    d 3
    e 4
    dtype: int64

    2.Series的属性

    Series拥有以下8个属性:

    1. values:以ndarray格式返回Series对象的所有元素
    2. index:返回Series对象的索引
    3. dtype:返回Series对象的数据类型
    4. shape:返回Serise对象的形状
    5. nbytes:返回Series对象的字节数
    6. ndim: 返回Series的维度
    7. size:返回Series对象的个数
    8. T:返回Series对象的转置
    import pandas as pd
    seriesl = pd.Series([1,2,3,4])
    print('seriesl:\n{}'.format(seriesl))
    print('seriesl.values:{}'.format(seriesl.values))
    print('seriesl.index:{}'.format(seriesl.shape))
    print('seriesl.ndim:{}'.format(seriesl.ndim))
    '
    运行

    seriesl:
    0 1
    1 2
    2 3
    3 4
    dtype: int64
    seriesl.values:[1 2 3 4]
    seriesl.index:(4,)
    seriesl.ndim:1

    3.访问Series数据

    import pandas as pd
    series2 = pd.Series([1,2,3,4,5,6,7],index=['A','B','C','D','E','F','G'])
    print('series2位于第一位置的数据为:',series2[0])
    print('E is {}\n'.format(series2['E']))
    '
    运行

    series2位于第一位置的数据为: 1
    E is 5

    4.更新、插入和删除

    更新Series

    import pandas as pd
    list1=[1,2,3,4,5]
    seriesl = pd.Series(list1,index=['a','b','c','d','e'],name='List')
    print('seriesl:\n{}'.format(seriesl))
    # 更新元素
    seriesl['a'] = 3
    print('更新后的Seriesl为:\n',seriesl)
    '
    运行

    seriesl:
    a 1
    b 2
    c 3
    d 4
    e 5
    Name: List, dtype: int64
    更新后的Seriesl为:
    a 3
    b 2
    c 3
    d 4
    e 5
    Name: List, dtype: int64

    追加Series和插入单个值

    通过append()方法在原来的Series上追加新的Series。若只在原来Serise上插入单个值,采用赋值方式。

    import pandas as pd
    list1 = [0,1,2,3,4]
    series1 = pd.Series(list1,index=['a','b','c','d','e'],name='list')
    print('seriesl:\n{}'.format(seriesl))
    series2 = pd.Series([4,5],index=['f','g'])
    # 追加Series
    print('在Series1后插入series2为:\n',series1.append(series2))
    

    seriesl:
    a 3
    b 2
    c 3
    d 4
    e 5
    Name: List, dtype: int64
    在Series1后插入series2为:
    a 0
    b 1
    c 2
    d 3
    e 4
    f 4
    g 5
    dtype: int64

    删除Series元素

    import pandas as pd
    list1 = [0,1,2,3,4]
    series1 = pd.Series(list1,index=['a','b','c','d','e'],name='list')
    print('series1:\n{}'.format(series1))
    # 删数据
    series1.drop('e',inplace=True)
    print('删除e索引后的series:\n',series1)
    '
    运行

    series1:
    a 0
    b 1
    c 2
    d 3
    e 4
    Name: list, dtype: int64
    删除e索引后的series:
    a 0
    b 1
    c 2
    d 3
    Name: list, dtype: int64

    二、DataFrame

    Data类似于数据库中的表,既有行索引也有列索引,DataFrame可以看做是Series组成的字典,每个Series是DataFrame的一列。

    1.创建DataFrame

    DataFrame语法结构:
    pandas.DataFrame(data=None,columns=None,dtype=None,copy=False)
    参数说明:

    • data:接收ndarray、dict、list或者DataFrame。表示输入数据,默认None
    • index:接收index、ndarray。表示索引,默认None
    • columns:接收index,ndarray。表示列标签。默认None

    通过dict创建DataFrame

    import pandas as pd
    dict1 = {'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]}
    print('通过dict创建的DataFrame为:\n ',pd.DataFrame(dict1,index=['a','b','c','d','e']))
    '
    运行

    通过dict创建的DataFrame为:
    col1 col2
    a 0 5
    b 1 6
    c 2 7
    d 3 8
    e 4 9

    通过list创建DataFrame

    import pandas as pd
    list5 =[[0,5],[1,6],[2,7],[3,8],[4,9]]
    print('通过list创建的DataFrame为:\n',pd.DataFrame(list5,index=['a','b','c','d','e'],columns=['col1','col5']))
    '
    运行

    通过list创建的DataFrame为:
    col1 col5
    a 0 5
    b 1 6
    c 2 7
    d 3 8
    e 4 9

    通过Series创建DataFrame

    以Series创建DataFrame,每个Series为一行,而不是一列:

    import pandas as pd
    noteSeries = pd.Series(['C','D','E','F','G','A','B'],index = [1,2,3,4,5,6,7])
    weekdaySeries = pd.Series(['Mon','Tue','Wed','Thu','Fri','Sat','Sun'],index = [1,2,3,4,5,6,7])
    df4 = pd.DataFrame([noteSeries,weekdaySeries])
    print('df4:\n{}'.format(df4))
    '
    运行

    df4:
    1 2 3 4 5 6 7
    0 C D E F G A B
    1 Mon Tue Wed Thu Fri Sat Sun

    2.DataFrame属性

    DataFrame是二维数据结构,包含列索引,比Series具有更多的属性。DataFrame常见的属性及其说明如下:

    1. values:以ndarray的格式返回DataFrame对象所有的元素
    2. index:但会DataFrame对象的Index
    3. columns:返回DataFrame对象所有的列标签
    4. dtypes:返回DataFrame对象的数据类型
    5. axes:返回DataFrame对象的轴标签
    6. ndim:返回DataFrame的维度
    7. size:返回DataFrame对象的个数
    8. shape:返回DataFrame的形状

    访问DataFrame的属性

    import pandas as pd
    df = pd.DataFrame({'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]},index=['a','b','c','d','e'])
    print(df)
    print('DataFrame的index为:',df.index)
    print('DataFrame的列标签为:',df.columns)
    print('DataFrame的轴标签',df.axes)
    print('DataFrame的维度:',df.ndim)
    print('DataFrame的维度:',df.shape)
    '
    运行

    col1 col2
    a 0 5
    b 1 6
    c 2 7
    d 3 8
    e 4 9
    DataFrame的index为: Index([‘a’, ‘b’, ‘c’, ‘d’, ‘e’], dtype=‘object’)
    DataFrame的列标签为: Index([‘col1’, ‘col2’], dtype=‘object’)
    DataFrame的轴标签 [Index([‘a’, ‘b’, ‘c’, ‘d’, ‘e’], dtype=‘object’), Index([‘col1’, ‘col2’], dtype=‘object’)]
    DataFrame的维度: 2
    DataFrame的维度: (5, 2)

    3.访问DataFrame首尾元素

    head()和tail()方法用于访问DataFrame前n行和后n行数据,默认返回5行数据。

    print('默认返回前5行数据:\n',df.head())
    print('默认返回后3行数据:\n',df.tail(3))
    

    默认返回前5行数据:
    col1 col2
    a 0 5
    b 1 6
    c 2 7
    d 3 8
    e 4 9
    默认返回后3行数据:
    col1 col2
    c 2 7
    d 3 8
    e 4 9

    4.更新、删除和插入

    更新DataFrame

    import pandas as pd
    df = pd.DataFrame({'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]},index=['a','b','c','d','e'])
    print('DataFrame为:\n',df)
    # 更新列
    df['col1']=[10,11,12,13,14]
    print('更新后的DataFrame为\n:',df)
    '
    运行

    DataFrame为:
    col1 col2
    a 0 5
    b 1 6
    c 2 7
    d 3 8
    e 4 9
    更新后的DataFrame为
    : col1 col2
    a 10 5
    b 11 6
    c 12 7
    d 13 8
    e 14 9

    删除和插入DataFrame

    import pandas as pd
    df3 = pd.DataFrame({'note':['C','D','E','F','G','A','B'],'weekday':['Mon','Tue','Wed','Thu','Fri','Sat','Sun']})
    print('df3:\n{}'.format(df3))
    df3['No.'] = pd.Series([1,2,3,4,5,6,7])  # 采用赋值的方法插入列 相当于df3['No.'] = [1,2,3,4,5,6,7]
    print('df3:\n{}'.format(df3))
    del df3['weekday']  # 删除列的方法有很多,如del()、pop()、drop()等
    print('df3:\n{}'.format((df3)))
    '
    运行

    df3:
    note weekday
    0 C Mon
    1 D Tue
    2 E Wed
    3 F Thu
    4 G Fri
    5 A Sat
    6 B Sun

    df3:
    note weekday No.
    0 C Mon 1
    1 D Tue 2
    2 E Wed 3
    3 F Thu 4
    4 G Fri 5
    5 A Sat 6
    6 B Sun 7

    df3:
    note No.
    0 C 1
    1 D 2
    2 E 3
    3 F 4
    4 G 5
    5 A 6
    6 B 7

    drop()方法

    drop()犯法可以删除行或者列,基本语法格式如下:

    DataFrame。drop(labels,axis,levels,inplace)
    

    参数说明如下:

    • labels:表示删除行或者列的标签
    • axis:接收0或者1,0表示删除行,1表示删除列,默认是0
    • levels:接收int型或者索引名,表示索引级别
    • inplace:接收bool型,表示操作是否对原数据生效,默认为False
    import pandas as pd
    df = pd.DataFrame({'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]},index=['a','b','c','d','e'])
    df['col3'] = [15,16,17,18,19]
    print('插入列后的DataFrame为:\n',df)
    df.drop(['col3'],axis=1,inplace = True)
    print('删除col3列DataFrame为:\n',df)
    # 删除行
    df.drop('a',axis=0,inplace=True)
    print('删除a行的DataFrame为:\n',df)
    '
    运行

    插入列后的DataFrame为:
    col1 col2 col3
    a 0 5 15
    b 1 6 16
    c 2 7 17
    d 3 8 18
    e 4 9 19
    删除col3列DataFrame为:
    col1 col2
    a 0 5
    b 1 6
    c 2 7
    d 3 8
    e 4 9
    删除a行的DataFrame为:
    col1 col2
    b 1 6
    c 2 7
    d 3 8
    e 4 9

    三、Index

    Index对象可以通过pandas.Index()函数创建,也可以通过创建数据对象Series、DataFrame时接收index或者column参数创建,前者属于显示创建,后者属于隐式创建。
    Index对象属性说明:

    • is_monotonic:当元素均大于前一个元素时,返回True
    • is_unique:当Index没有重复值时,返回True

    四、Plot

    Matplotlib绘制图表需要各个基础组件对象,工作量较大。而Pandas使用行列标签以及分组信息,较为简便的完成图表的制作,Pandas作图函数:

    1. Plot():绘制线性二维图、折线图
    2. Pie():绘制饼形图
    3. Hist():绘制二维条形直方图
    4. Boxplot():绘制样本数据箱型图
    5. Plot(logy = True):绘制Y轴对数图形
    6. Plot(year=error):绘制误差条形图

    1.调用plot.pie()对生成的一列随机数的Series数据绘制饼图

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 调用plot.pie()对生成的一列随机数的Series数据绘制饼图
    df1 = pd.Series(3*np.random.rand(4),index=['a','b','c','d'],name='series')
    # print(df1)
    df1.plot.pie(figsize=(6,6))
    plt.show()
    # df1.plot()、
    '
    运行

    在这里插入图片描述

    2.调用plot.bar()对生成的四列随机数的DataFrame绘制条形图

    # 调用plot.bar()对生成的四列随机数的DataFrame绘制条形图
    df2 = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
    # print(df2)
    df2.plot.bar()
    plt.show()
    

    在这里插入图片描述

    3.调用plot.box()对生成的五列随机数的DataFrame绘制箱型图

    # 调用plot.box()对生成的五列随机数的DataFrame绘制箱型图
    df3 = pd.DataFrame(np.random.rand(10,5),columns=['A','B','C','D','E'])
    df3.plot.box()
    plt.show()
    

    在这里插入图片描述

    4.调用plot.scatter()对生成的四列随机数的DataFrame数据绘制散点图

    # 调用plot.scatter()对生成的四列随机数的DataFrame数据绘制散点图
    df4 = pd.DataFrame(np.random.rand(50,4),columns=['a','b','c','d'])
    df4.plot.scatter(x='a',y='b')
    plt.show()
    

    在这里插入图片描述

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # 调用plot.pie()对生成的一列随机数的Series数据绘制饼图
    df1 = pd.Series(3*np.random.rand(4),index=['a','b','c','d'],name='series')
    # print(df1)
    df1.plot.pie(figsize=(6,6))
    plt.show()
    # df1.plot()、
    
    # 调用plot.bar()对生成的四列随机数的DataFrame绘制条形图
    df2 = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
    # print(df2)
    df2.plot.bar()
    plt.show()
    
    # 调用plot.box()对生成的五列随机数的DataFrame绘制箱型图
    df3 = pd.DataFrame(np.random.rand(10,5),columns=['A','B','C','D','E'])
    df3.plot.box()
    plt.show()
    
    # 调用plot.scatter()对生成的四列随机数的DataFrame数据绘制散点图
    df4 = pd.DataFrame(np.random.rand(50,4),columns=['a','b','c','d'])
    df4.plot.scatter(x='a',y='b')
    plt.show()
    '
    运行
  • 相关阅读:
    C语言童年生活二三事(ZZULIOJ1091:童年生活二三事(多实例测试))
    java计算机毕业设计基于安卓Android微信的酒店宾馆预约预定管理系统 uniAPP
    element UI 组件封装--搜索表单(含插槽和内嵌组件)
    WebStorm使用PlantUML
    C- qsort()
    stm32 用定时器的编码器模式来检测正反转
    uniapp实现点击标签文本域中显示标签内容
    1. hadoop环境准备
    Pikachu靶场——SSRF 服务端请求伪造
    Linux实战案例——使用LNMP+WordPress搭建个人博客网站
  • 原文地址:https://blog.csdn.net/weixin_51390582/article/details/126777371