首页 > 其他分享 >Pandas

Pandas

时间:2023-10-25 21:46:54浏览次数:24  
标签:index df Series 索引 pd data Pandas

一、安装

pip install  pandas

二、系统环境

import pandas as pd

 

#设定自由列表输出最多为 10 行 pd.options.display.max_rows = 10   # 显示当前 Pandas 版本号 pd.__version__

 

Series对象包装的是numpy中的一维数组,实际上是将一个一维数组与一个索引名称捆绑在一起了。

DataFrame 是 Pandas 中的一个表格型的数据结构,有行索引也有列索引。

三、Series:一维数组

用值列表生成 Series 时,Pandas 默认自动生成整数索引 。

pandas中两个重要的属性: values 和index

              values:是Series对象的原始数据

              index:对应了Series对象的索引对象

例:使用列表创建:

      import pandas as pd       data=pd.Series([4,3,5,6,1])       data         属性values和index:       data.values       data.index   指定index:       data=pd.Series([5,4,6,3,1],index=        ['one','two','three','four','five'])      使用list列表指定index:         data=pd.Series([4,3,2,1],index=list('abcd'))      传入字典创建,默认将key作为index:         population_dict={'sh':2800,'bj':3000,'gz':1500,'sz':1200}         population_series=pd.Series(population_dict)     如果既用了字典创建了Series对象,又显示的指定了index,如果key不存在,则值为NaN

四、DataFrame对象创建

DataFrame 是 Pandas 中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也

有列索引,可以被看做是由 Series 组成的字典。

将两个series对象作为dict的value传入,就可以创建一个DataFrame对象。

DataFrame创建:

例:

population_dict=

{'beijing':3000,'shanghai':1200,'guangzhou':1800}

area_dict=

{'beijing':300,'shanghai':180,'guangzhou':200}

import pandas as pd

population_series=pd.Series(population_dict)

area_series=pd.Series(area_dict)

citys=pd.DataFrame({'area':area_series,'population':population_series})

列表创建:

用字段形式创建

index 一般为索引 , columns一般为列名

Pandas中的Index,其实是不可变的一维数组

五、导入excel 文件

Pandas中的Index,其实是不可变的一维数组

使用Pandas模块操作Excel时候,需要安装openpyxl

pd.read_excel('stu_data.xlsx')

 

导入.xlsx文件时,指定导入哪个Sheet

导入.xlsx文件时,通过index_col指定行索引

导入.xlsx文件时,通过header指定列索引

导入.xlsx文件时,通过usecols指定导入列

 

导入csv文件时除了指明文件路径,还需要设置编码格式。

导入.csv文件,文件编码格式是gbk

导入.csv文件,指明分隔符

 

导入.txt文件用得方法时read_table(),read_table()是将利用分隔符分开的文件导入。DataFrame的通用函数。它不仅仅可以导入.txt

文件,还可以导入.csv文件。

导入.txt文件

导入.csv文件,指明分隔符

六、了解数据

head()与 tail():

   #浏览前几条记录    df.head()    df.head(10)    #浏览最后几条记录    df.tail()

info():info()可以输出整个表中所有列的数据类型。

    df.info()

shape()方法会以元组的形式返回行、列数。注意 shape 方法获取行数和列数时不会把索引和列索引计算在内。

修改变量列:

  columns

    df.columns =新的名称 list

    df.columns

  rename()

    df.rename(columns =新旧名称字典:{旧名称,:新名称},

    inplace = False :是否直接替换原数据框)

    df.rename(columns ={'newname':'name','newname2':'name2'},

    inplace = True )

删除变量列:

  df.drop(index / columns =准备删除的行/列标签,多个时用列表形式提供

      inplace = False :是否直接更改原数据框 )

     df.drop(columns =['col1','col2'])   del df['column-name'] 直接删除原数据框相应的一列,建议尽量少用   del df.column_name #不允许  

添加变量列

  根据新数据添加

      df[cloumn] = pd.Series([val,val2,val3],index=[c1,c2,c3])

  根据原数据添加 

       df[cloumn] = df[c2]+df[c3]

七、变量类型的转换

   df.dtypes :査看各列的数据类型

     #将df里所有的列转换成str      df.astype('str')      df.astype('str').dtypes      #修改某一列数据的数据类型      df.column.astype ('str')      #转换错误      df.astype('int', errors = 'ignore').dtypes 明确指定转换类型的函数

八、引用和修改索引

    引用索引:索引仍然是有存储格式的,注意区分数值型和字符型的引用方式

          df.index

    修改索引:

      修改索引名:

         例:df = pd.DataFrame({   'name':['zs','ls','ww'],'level':['vip1','vip2','pm']})

           df.index.name='sno'              df2 = pd.read_excel('stu_data.xlsx')            df3 = df2.set_index(keys = '学号')

      修改索引值:df1.index = ['a', 'b', 'c']

    更新索引:

       reindex 则可以使用数据框中不存在的数值建立索引,并据此扩充新索引值对应的索引行/列,同时进行缺失值填充操作。

       df.reindex(

            labels :类数组结构的数值,将按此数值重建索引,非必需

            copy = True :建立新对象而不是直接更改原 df/series 缺失数据的处理方式

            method :针对已经排序过的索引,确定数据单元格无数据时的填充方法,非必需             pad / ffill:用前面的有效数值填充             backfill / bfill:用后面的有效数值填充             nearest:使用最接近的数值逬行填充             fill_value = np.NaN :将缺失值用什么数值替代             limit = None :向前/向后填充时的最大步长             )

     例:import pandas as pd

       df = pd.DataFrame({'name':['zs','ls','ww'],'level':['vip1','vip2','pm'] })

       df.reindex([0,1,3])

        df.reindex([0,1,2,3],method='ffill')

       df.reindex([0,1,2,3],fill_value="test")

九、Series的索引和切片

  loc函数:通过行索引 "Index" 中的具体值来取行数据及根据普通索引获取。(如取"Index"为"A"的行)

  iloc函数:通过行号来取行数据,及根据位置索引获取。

十、DataFrame的索引和切片

     选择列:

        当想要获取 df 中某列数据时,只需要在 df 后面的方括号中指明要选择的列即可。

         如果是一列,则只需要传入一个列名;如果是同时选择多列,则传入多个列名即可(注意:多个列名 用一个 list 存放)

        例:#获取一列            

          df[col]

          #获取多列

          df[[col1 , col2]]

     

     按行列索引选择:df.loc[普通行索引,普通列索引]

             df.iloc[位置行索引,位置列索引]

       loc与iloc获取:  import numpy as np

              import pandas as pd

              data=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('ABCD'))

              #获取行为'b'的行

              data.loc['b']

              #使用iloc获取,行为'b'的行,行号为1

              data.iloc[1]

      获取'A'列所有行:  data.loc[:,'A']

              data.iloc[:,0]

     获取部分行部分列:  #获取a bc行,A B列

              data.loc[['a','b','c'],['A','B']]

              data.iloc[[0,1,2],[0,1]]

       获取满足条件的行:   df[df[“支出”]>10]

              df[(df[“支出”]>10) & (df[“性别”]=='女')]

   isin()选择:

      df.isin(values) 返回结果为相应的位置是否匹配给出的 values

      values 为序列:对应每个具体值

      values 为字典:对应各个变量名称

      values 为数据框:同时对应数值和变量名称

      df.col.isin([1,3,5])

      df[ df.col.isin([1,3,5])]

      df[ df.col.isin(['val1','val2'])]

      df[ df.index.isin(['val1','val2'])]

   query()的使用:

        使用boolean值表达式进行筛选

          df.query(

              expr:语句表达式

              inplace=False;是否直接替换原数据框

              )

十一、排序

   用索引排序

      df.sort_index(

              level :(多重索引时)指定用于排序的级别顺序号/名称18               ascending = True :是否为升序排列,多列时以表形式提供               inplace = False :               na_position = 'last‘ :缺失值的排列顺序,               first/last               )

  使用变量值排序

      df.sort_values(by='身高')

十二、计算新变量

    axis = 0 :针对行还是列逬行计算

       0 ' index':针对每列进行计算

       1' columns ':针对每行逬行计算

      

     在指定位置插入新变量列

            df.insert(

                loc :插入位置的索引值,0 <= loc <= len (columns)

                column :插入的新列名称

                value : Series 或者类数组结构的变量值

                allow_duplicates = False :是否允许新列重名

                )#该方法会直接修改原 df

          : # 指定位置增加新列

              df.insert(1,'new_col',100)               df.insert(1,'new_col2',df.课程.apply(get_first))

十三、数据分组

    dfg = df.groupby ('开设')

      #查看dfg里面的数据       dfg.groups       #查看具体描述       dfg.describe( )       #按多列分组       dfg2 = df.groupby(['性别' , '开设'])       dfg2.mean ()         该操作也适用于希望对不同的变量列进行不同操作时   dfg['身高'].max()

  分组汇总

     使用df.agg()函数进行汇总

     可以直接使用的汇总函数

 

 

十四、引用自定义函数

    # 使用自定义函数

     def mynum(x:int) ->int:         return x.min()      df2.身高.agg (mymean)      dfg.agg(mymean)

 

 

 

 

 

  

 

 

 

        

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:index,df,Series,索引,pd,data,Pandas
From: https://www.cnblogs.com/black-rosebush/p/17788058.html

相关文章

  • 使用pandas模块将excel文档两列转换为字典
    一个名为err_code.xlsx的文件,打开里面内容是: 一共有几百行这样的数据。我们的需求是将其变为这种字典格式,key、value、和注释: 可以借助pandas模块来进行。脚本如下:importpandasaspddf=pd.read_excel('err_code.xlsx')countrymap=dict(zip(d......
  • 通过pandas读取xls文件系统提示:no engine?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Python自动化办公的问题,一起来看看吧。通过pandas读取xls文件(pd.read_excel)系统提示:noengineforfiletyppexls,请问应该如何处理呢?二、实现过程后来【隔壁......
  • Python 利用pandas 和 matplotlib绘制柱状图
    当你需要展示数据时,图表是一个非常有用的工具。Python中的pandas和matplotlib库提供了丰富的功能,可以帮助你轻松地绘制各种类型的图表。本文将介绍如何使用这两个库,绘制一个店铺销售数量的柱状图,并添加各种元素,如数据标签、图例、网格线等。准备工作在开始之前,你需要安装p......
  • 通过pandas读取excel数据,很多数据开头带有'特殊字符,如何处理?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Pandas数据处理的问题,一起来看看吧。请教问题:通过pandas读取excle数据,很多数据开头带有'特殊字符,我用replace或者strip()函数处理均无法处理。......
  • Pandas在合并数据的时候,发现部分数据缺失,该怎么解决?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Pandas数据合并的问题,一起来看看吧。请教:对两个exlce表示进行合并,df=pd.merge(df1,df2,on="用户账号",how='left'),但是由于系统数据的原因,df1表格的“用户账户”缺少最后两位数,而df2中的“用户账户”是准确的,通过......
  • pandas教程02:查找表中数据
    在上篇教程中,我们介绍了pandas的安装、数据的导入与导出以及删除行列的操作。这次让我们一起研究下在pandas中如何根据指定的条件查找表中数据。1.数据准备这次,我们使用一张学生成绩表。还是老样子,保存以下内容到文件“期末成绩表.csv”中。学号,性别,语文,数学,英语2301001,......
  • Example: Pandas Excel output with column formatting pandas 对excel 列做格式处理
    AnexampleofconvertingaPandasdataframetoanExcelfilewithcolumnformatsusingPandasandXlsxWriter.Itisn’tpossibletoformatanycellsthatalreadyhaveaformatsuchastheindexorheadersoranycellsthatcontaindatesordatetimes.Note:......
  • Pandas怎样设置处理后的第一行为索引?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【wen】问了一个Pandas自动化办公的问题,一起来看看吧。请教问题设置了header=None,通过drop_duplicates删除了重复行,怎样设置处理后的第一行为索引(原表格的列比较多,而且每次表格的列的名字不一定相同)二、实现过程这里......
  • 利用 pandas 自动合并 excel 单元格
    代码比较简洁df=pd.DataFrame({"animal":("horse","horse","dog","dog"),"color":("black","white","grey","black"),"name&qu......
  • 3.1-Pandas数据结构
    3.1-Pandas数据结构  3.1.1认识Pandas库¶基于Numpy的一种工具,为解决数据分析任务而创建的,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具基本上你能用Excel或者Bi工具进行的数据处理,Pandas也都能实现,而且更快 In [ ]:......