• python数据分析之Pandas库(一)


    Pandas介绍

    Pandas有两种常用的数据结构: Series (一维数据)与 DataFrame(二维数据)。
    Series 是一种类似于一维数组的对象,能保存不同数据类型
    DataFrame 是一个二维的表格型的数据结构。

    一、导入

    import pandas as pd
    
    • 1

    二、Series

    1、初始化

    使用一位列表初始化Series

    # 默认索引下标为数字
    s=pd.Series([1,3,5,np.nan,6,7])
    
    # 更改索引下标为指定字母
    s1=pd.Series([1,3,5,np.nan,6,7],index=['a','b','c','d','x','y'])
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、索引[数据的行标签]、切片

    s=pd.Series([1,3,5,np.nan,6,7])
    # 索引
    s.index
    
    # 值
    s.values
    
    # 索引取值,下标为0的元素值
    s[0]
    
    # 切片,左闭右开,步长为2
    s[1:5:2]
    
    # 为索引取名
    s.index.name='索引'
    
    # 修改索引下标
    s.index=list('abcdxy')
    
    # 根据自定义的索引进行切片,非左闭右开
    s['a':'c':2]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    三、DataFrame

    1、初始化

    import numpy as np
    df1 = pd.DataFrame(np.random.randn(6,4))  # 6行4列,默认行列标签均为数字下标
    
    date=pd.date_range('20230908',periods=6)  # 构造行标签
    df = pd.DataFrame(np.random.randn(6,4), index = date, columns = list("ABCD"))  # index指定行标签,columns指定列标签
    
    # 使用字典传入数据
    df2 = pd.DataFrame({
    'A':1.,
    'B':pd.Timestamp("20181001"),
    'C':pd.Series(1,index = list(range(4)),dtype = float),
    'D':np.array([3]*4, dtype = int),
    'E':pd.Categorical(["test","train","test","train"]),
    'F':"abc"}) #B:时间戳,E分类类型
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2、查看数据

    # 查看各列的数据类型
    df2.dtypes
    
    # 查看头尾数据
    df.head()
    df.tail(3)
    
    # 查看行标签
    df.index
    
    # 查看列标签
    df.columns
    
    # 查看元素值
    df.values
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    四、pandas读取数据即数据操作

    在这里插入图片描述

    1、读入文件【以豆瓣电影为例】

    # 读入excel文件
    df=pd.read_excel(r"D:\desk\77\bbb\python\豆瓣电影数据.xlsx",index_col = 0)
    # 读入CSV文件  pd.read_csv(r'路径')
    
    • 1
    • 2
    • 3

    2、行操作

    访问

    # 取第一行
    df.iloc[0]
    # 取前4行
    df.iloc[:4]  #左闭右开
    
    df.loc[:4]  #不是左闭右开
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    添加一行

    dit = {"名字":"复仇者联盟3","投票人数":123456,"类型":"剧情/科幻","产地":"美国","上映时间":"2018-05-04 00:00:00","时长":142,"年代":2018,"评分":np.nan,"首映地点":"美国"}
    s = pd.Series(dit)
    s.name = 38738
    df=df.append(s)  # 覆盖掉原来的数据重新进行赋值 
    
    • 1
    • 2
    • 3
    • 4

    删除一行

    df = df.drop([38738])
    
    • 1

    3、列操作

    访问

    # 取列标签
    df.columns
    
    # 取指定标签列
    df['产地']
    # 取多列,指定标签
    df['名字','类型']
    # 取定标签列的,前5行
    df['名字'][:5]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    添加一列

    # 添加为‘序号’的1列,值为1到len(df)
    df['序号']=range(1,len(df)+1)
    
    • 1
    • 2

    删除一列

    # 删除名为‘序号’的1列
    df=df.drop('序号',axis=1)  # axis指定方向:0为行,1为列
    
    • 1
    • 2

    通过标签选择数据
    df.loc[index,column]

    # 选择行标签为1,列标签为‘名字’的元素
    df.loc[1,'名字']  
    
    # 选择多行多列
    df.loc[[1,3,5,7,9],['名字','评分']]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    条件选择

    选取产地为美国的所有电影

    df[df['产地']=='美国']
    
    • 1

    选取产地为美国的所有电影,并且评分大于9分的电影

    df[(df.产地=='美国')&(df.评分)>9]  # df.标签  等同于 df['标签']
    
    • 1

    选取产地为美国或中国大陆的所有电影,并且评分大于9分

    df[((df.产地 == "美国") | (df.产地 == "中国大陆")) & (df.评分 > 9)]
    
    • 1

    五、缺失值及异常值处理

    方法说明
    dropna根据标签中的缺失值进行过滤,删除缺失值
    fillna对缺失值进行填充
    isnull判断哪些值是缺失值,返回布尔对象
    notnullisnull的否定式

    1、判断缺失值

    df[df['名字'].isnull()]
    df[df['名字'].notnull()]
    
    • 1
    • 2

    2、填充缺失值

    df[df['评分'].isnull()]
    df['评分'].fillna(np.mean(df['评分']),inplace=True)  # 使用均值来进行填充,inplace意为直接在原始数据中进行修改
    
    df1=df.fillna('未知电影')  # 将所有空值填充为‘未知电影’
    df1[df1['名字'].isnull()  # 填充后所有元素均不空
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、删除缺失值

    df.dropna() 参数
    how = ‘all’:删除全为空值的行或列
    inplace = True: 覆盖之前的数据
    axis = 0: 选择行0或列1,默认是行

    df2=df.dropna()  # 产生新对象
    df.dripna(inplace=True)  # 直接在原对象上操作
    
    • 1
    • 2

    4、处理异常值

    异常值,即在数据集中存在不合理的值,又称离群点。比如年龄为-1,笔记本电脑重量为1吨等,都属于异常值的范围。

    # 投票人数小于0的数或小数均为异常值,可直接删除或修正
    df=df[df.投票人数>0]  # 大于0
    df=df[df['投票人数']%1==0  # 整数
    
    • 1
    • 2
    • 3

    5、数据保存

    数据处理之后,然后将数据重新保存到movie_data.xlsx

    df.to_ecxel('movie_data.xlsx')
    
    • 1
  • 相关阅读:
    常见的十种排序算法C++实现(附时空复杂度,稳定性分析)
    hashmap的一些坑
    2.4G频段的SI24R2E无线单发芯片技术问答,常见问题进行汇总解答
    原装芯片现货,价格优惠,实单可谈
    杨辉三角形(Java版)
    Office2019 没有阅读模式的解决办法
    LazadaAPI接口解析,实现获得lazada商品评论列表
    springcloudalibaba架构(5):Sentinel熔断规则
    分页文件pagefile.sys引出的疑问
    C++-关键字:auto
  • 原文地址:https://blog.csdn.net/qq_52048052/article/details/132778579