Pandas用法详细介绍

Pandas用法详细介绍

1.pandas模块安装

在命令行使用pip install pandas即可


2.pandas介绍

pandas 是基于numpy 的一种工具,该工具是为了解决数据分析任务而创建的。pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
pandas主要包含了3个数据结构:

  • 系列(Series)
  • 数据帧(DataFrame)
  • 面板(Panel)
    这些数据机构建立在numpy之上,这也就说明pandas建立的数据结构进行运算时很快。

Series可以看作是一个1维列向量,DataFrame可以看作是一个2维表或矩阵,Panel可以看作是3维向量,存放DataFrame的容器。

数据结构维数描述
Series11D标记均匀数组,同构数据,尺寸大小不变,数据可变
DataFrame2一般2D标记,异构数据,大小可变,数据可变。
Panel3一般3D标记,异构数据,大小可变,数据可变。

3.系列Series

panda中的Series构造函数如下:

pandas.Series( data, index, dtype, copy)

构造函数的参数如下表:

编号参数描述
1data数据采用各种数据结构都行,如ndarray, list, tuple, constant, dict
2index索引值必须是唯一的和散列的,与数据的长度相同。 默认np.arange(n)如果没有索引被传递。
3dtypedtype用于数据类型。如果没有,将推断数据类型
4copy复制数据,默认为false

创建一个空的系列


示例:

import pandas as pd
s = pd.Series()
print(s)

输出结果如下:

Series([], dtype: float64)

使用ndarray创建系列


如果使用ndarray创建系列,传递index时必须喝ndarray的长度相同。不传递索引的话就默认为(n),即[0, 1, ... , n-1]

import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s1 = pd.Series(data)
s2 = pd.Series(data, index = [100,101,102,103])
print(s1)
print(s2)

输出结果如下:

0    a
1    b
2    c
3    d
dtype: object
100    a
101    b
102    c
103    d
dtype: object

通过字典创建一个系列


Series可以通过dict来创建,不指定索引的话dict中的将充当索引,如果传递了索引,索引中与标签对应的数据中的值将被拉出。
示例:

data = {'a' : 0., 'b' : 1., 'c' : 2.}
s1 = pd.Series(data)
s2 = pd.Series(data, index = ['d','c','b','a'])
print(s1)
print(s2)

输出如下:

a    1
b    2
c    3
dtype: int64
d    NaN
c    3.0
b    2.0
a    1.0
dtype: float64

注意观察 - 索引顺序保持不变,缺少的元素使用NaN(不是数字)填充。

通过标量创建系列


如果通过标量(单个数值)来创建系列,那么必须指定索引,然后通过重复该值来完成。
示例

data = 5
df = pd.Series(data, index = [0, 1, 2, 3])
print(df)

输出如下:

0    5
1    5
2    5
3    5
dtype: int64

系列中数据的访问


系列访问数据元素类似列表和ndarray
示例1:下标

s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
print(s[0])
print(s[:3]
print(s[-3:])

输出如下:

1
a    1
b    2
c    3
dtype: int64
c    3
d    4
e    5
dtype: int64

使用标签访问数据


一个系列就像一个固定大小的字典,可以通过索引标签获取和设置值。
示例

s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
print(s['a']) #访问单个元素
print(s[['a','c','d']]) #访问多个元素, 注意此时要用[[ ]]

输出如下:

1
a    1
c    3
d    4
dtype: int64

4.DataFrame数据帧

pandas中的DataFrame构造函数如下:

pandas.DataFrame( data, index, columns, dtype, copy)

构造函数的参数如下表:

编号参数描述
1data数据采用各种数据结构都行,如ndarray, list, tuple, constant, dict,map和另一个DataFrame
2index默认np.arange(n)如果没有索引被传递。
3columns对于列标签,可选的默认语法是 - np.arange(n)。 这只有在没有索引传递的情况下才是这样。
4dtypedtype用于数据类型。如果没有,将推断数据类型
5copy复制数据,默认为false

创建一个空的DataFrame


示例:

import pandas as pd
df = pd.DataFrame()
print(df)

输出如下:

Empty DataFrame
Columns: []
Index: []

通过包含ndarray/list的字典创建DataFrame


data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print(df1)
print(df2)

输出如下:

      Age      Name
0     28        Tom
1     34       Jack
2     29      Steve
3     42      Ricky
         Age    Name
rank1    28      Tom
rank2    34     Jack
rank3    29    Steve
rank4    42    Ricky

通过列表创建数据帧DataFrame


示例

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, index=['first', 'second'])
print(df1)
print(df2)

输出如下:

    a    b      c
0   1   2     NaN
1   5   10   20.0
        a   b       c
first   1   2     NaN
second  5   10   20.0

从系列的字典来创建DataFrame


import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
      'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print(df)

输出如下:

      one    two
a     1.0    1
b     2.0    2
c     3.0    3
d     NaN    4

列操作


data = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
      'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(data)
print(df ['one']) #选择列
#添加列
print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df

print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']
print(df)
#删除列
del df['one'] # 或者使用df.pop('one')
print(df)

输出如下:

a    1.0
b    2.0
c    3.0
d    NaN
Name: one, dtype: float64
Adding a new column by passing as Series:
   one  two  three
a  1.0    1   10.0
b  2.0    2   20.0
c  3.0    3   30.0
d  NaN    4    NaN
   two  three
a    1   10.0
b    2   20.0
c    3   30.0
d    4    NaN

行操作


示例

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
     'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print(df.loc['b']) # 选择b那一行
print(df.iloc[2]) #通过整数位置选择
print(df[2:4] #行切片
print(df.loc[['a','b'],['one','two']]) # 同时通过标签选择行和列

输出如下:

one 2.0
two 2.0
Name: b, dtype: float64
one   3.0
two   3.0
Name: c, dtype: float64
      one    two
c     3.0     3
d     NaN     4
   one  two
a  1.0    1
b  2.0    2

添加行

df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])

df = df.append(df2) #添加df2到df
print(df)
df = df.drop(0) #删除索引为0的行
print(df)

输出如下:

   a  b
0  1  2
1  3  4
0  5  6
1  7  8
  a b
1 3 4
1 7 8

5.常用属性和方法

编号属性或方法描述
1axes返回索引(列)
2dtype返回数据类型
3empty判断是否为空,为空则返回True
4ndim返回维数
5size返回元素的个数
6values将元素作为ndarray类型返回
7shape返回形状
8T将DataFrame进行转置(Series没有)
9head(n)返回前n行数据
10tail(n)返回最后n行数据

6.pands读写文件操作

pandas最常用的一个功能就是在机器学习或深度学习研究过程中读取数据集,方便后续操作,下面将详细介绍一下其常用的文件读写方式。

  • 读取excel文件

    pd.read_excel()用来读取excel文件,所涉及的常用方法参数如下:

    编号参数功能
    1ioexcel文件存储路径
    2sheet_name要读取的工作表的名称
    3header用哪一行作为列索引,默认第一行,即header=0
    4names最终定义的列名
    5index_col使用哪一列作为行索引,默认为0
    6usecols读取表格中哪几列,必须是位置索引
    7encoding默认是utf-8,也可以是gbk
    8skiprows跳过特定行
    9nrows读取多少行数据
    10engine默认是C,如文件路径存在中文时,engine= “python”

    示例:

    import pandas as pd
    df = pd.read_excel(r"E:\code\demo.xlsx",sheet_nam = 0,index_col = 	0,nrows = 5)
    print(df)
    

    输出如下:

    性别  年龄  省内省外   消费金额  贷款与否
    用户id                            
    1       男  60     1  311.0     0
    2     NaN  25     1  220.0     1
    3       男  47     1  246.0     0
    4       女  52     0    NaN     0
    5       女  21     0  916.0     0
    
  • 读取csv文件

    csv文件是以逗号为分隔符的文件,读取参数与excel基本类似,与excel的读取不一样的地方在于如遇到中文路径必须得设置engine参数;

    文件为gbk格式的csv,若不设置encoding参数,会报错,并且文件路径带有中文,需要设置engine参数,不然也会报错;
    pd.read_csv()用来读取csv文件,常用参数如下:
    file : 文件路径(绝对路径或者相对路径)
    sep:类型为str。csv文件中每一行数据之间的分隔符。官方文档指出对于read_csv()这个参数默认是英文逗号,默认也是逗号。
    剩余参数和pd.read_excel()很类似,按照上面的参照用即可。

    示例:

    df = pd.read_csv(r"E:\code\demo.csv",encoding = "gbk",engine = "python")
    print(df)
    

    输出如下:

    用户id   性别    年龄  省内省外   消费金额  贷款与否
    0      1    男  60.0     1  311.0   0.0
    1      2  NaN  25.0     1  220.0   1.0
    2      3    男  47.0     1  246.0   0.0
    3      4    女  52.0     0    NaN   0.0
    4      5    女  21.0     0  916.0   0.0
    5      6    男  37.0     0  980.0   1.0
    6      7    男  34.0     0  482.0   1.0
    7      8    男   NaN     0  267.0   0.0
    8      9    女  50.0     1    NaN   0.0
    9     10    男  20.0     1  265.0   1.0
    10    11    男  51.0     1  612.0   0.0
    
  • 读取txt文件

    读取txt文件可以用pd.read_table()或者pd.read_csv(),不过用read_csv()时要指定sep = '\t'为分隔符。

  • 写入文件

    写入txt,excel,csv这些文件大体相同,都是通过pd.to_xxx()完成,在这里仅用写入excel文件作为示例。
    示例:

    df = pd.read_excel(r"D:\迅雷下载\示例.xlsx",sheet_nam = 0,nrows = 5)
    df.to_excel(r"E:\code\demo2.xlsx",index = False,
    columns = ["用户id","性别","消费金额","贷款与否"],
    encoding = "utf-8",sheet_name = "示例",na_rep = "Na",inf_rep = "Na")
    # na_rep表示缺失值填充,inf_rep表示无穷值填充
    

    to_csv时需要指定sep参数。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值