非常全面的Pandas入门教程

原始文章

pandas是基于NumPy的一种数据分析工具,在机器学习任务中,我们首先需要对数据进行清洗和编辑等工作,pandas库大大简化了我们的工作量,熟练并掌握pandas常规用法是正确构建机器学习模型的第一步。

目录

  1. 如何安装pandas
  2. 如何导入pandas库和查询相应的版本信息
  3. pandas数据类型
  4. series教程
  5. dataframe教程
  6. 小结

1. 如何安装Pandas

最常用的方法是通过Anaconda安装,在终端或命令符输入如下命令安装:

conda install pandas

若未安装Anaconda,使用Python自带的包管理工具pip来安装:

pip install pandas

2. 如何导入pandas库和查询相应的版本信息

import numpy as np   # pandas和numpy常常结合在一起使用,导入numpy库
import pandas as pd  # 导入pandas库

print(pd.__version__) # 打印pandas版本信息

#> 0.23.4

3. pandas数据类型

pandas包含两种数据类型:series和dataframe。
series是一种一维数据结构,每一个元素都带有一个索引,与一维数组的含义相似,其中索引可以为数字或字符串。series结构名称:
|索引列|数据列

 

 dataframe是一种二维数据结构,数据以表格形式(与excel类似)存储,有对应的行和列。dataframe结构名称:

 

 

4. series教程

  1. 如何从列表,数组,字典构建series
mylist = list('abcedfghijklmnopqrstuvwxyz')   # 列表
myarr = np.arange(26)                          # 数组
mydict = dict(zip(mylist, myarr))             # 字典

# 构建方法
    ser1 = pd.Series(mylist)
    ser2 = pd.Series(myarr)
    ser3 = pd.Series(mydict)
    print(ser3.head())                 # 打印前5个数据
    
    #>  a    0
        b    1
        c    2
        d    4
        e    3
        dtype:int64
  1. 如何使series的索引列转化为dataframe的列
mylist = list('abcedfghijklmnopqrstuvwxyz')
myarr = np.arange(26)
mydict = dict(zip(mylist, myarr))
ser = pd.Series(mydict)

# series转换为dataframe
df = ser.to_frame()
# 索引列转换为dataframe的列

df.reset_index(inplace=True)
print(df.head())

#>      index  0
    0     a  0
    1     b  1
    2     c  2
    3     e  3
    4     d  4
  1. 如何结合多个series组成dataframe
# 构建series1
ser1 = pd.Series(list('abcedfghijklmnopqrstuvwxyz')) 
# 构建series2
ser2 = pd.Series(np.arange(26))

# 方法1,axis=1表示列拼接,0表示行拼接
df = pd.concat([ser1, ser2], axis=1)

# 与方法1相比,方法2设置了列名

    df = pd.DataFrame({'col1': ser1, 'col2': ser2})
    print(df.head())
    
    #>      col1  col2
        0    a     0
        1    b     1
        2    c     2
        3    e     3
        4    d     4
  1. 如何命名列索引的名称

ser = pd.Series(list('abcedfghijklmnopqrstuvwxyz'))

\# 命名索引列名称
ser.name = 'alphabets'
\# 显示前5行数据

ser.head()

#>    0    a
    1    b
    2    c
    3    e
    4    d
    Name: alphabets, dtype: object
  1. 如何获得series对象A中不包含series对象B的元素
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([4, 5, 6, 7, 8])

\# 返回ser1不包含ser2的布尔型series
ser3=~ser1.isin(ser2)
\# 获取ser不包含ser2的元素

ser1[ser3]

#>    0    1
    1    2
    2    3
    dtype: int64
  1. 如何获得seriesA和seriesB不相同的项
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([4, 5, 6, 7, 8])

\# 求ser1和ser2的并集
ser_u = pd.Series(np.union1d(ser1, ser2))
# 求ser1和ser2的交集
ser_i = pd.Series(np.intersect1d(ser1, ser2))
\# ser_i在ser_u的补集就是ser1和ser2不相同的项

ser_u[~ser_u.isin(ser_i)]

#>    0    1
    1    2
    2    3
    5    6
    6    7
    7    8
    dtype: int64

 

posted @ 2020-09-03 15:47  麦麦提敏  阅读(2707)  评论(0编辑  收藏  举报