Python之pandas

一、pandas是什么?

  pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、为什么要学习pandas?

  numpy能够帮我们处理数值型数据,但是这还不够。很多时候,我们的数据除了数值之外,还有字符串时间序列等。

三、pandas常用数据类型

Series:一维,带标签数组

  Series对象本质上由两个数组构成,一个数组构成对象的键(index,索引),一个数组构成对象的值(values),键→值。
  ndarray的很多方法都可以运用于series类型,比如argmax,clip
  series具有where方法,但是结果和ndarray不同。

(1)pandas之Series创建

import string
import pandas as pd
import numpy as np

# (1)通过数值创建
In [8]: t = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
In [9]: t
Out[9]: 
A    0
B    1
C    2
D    3
E    4
F    5
G    6
H    7
I    8
J    9
dtype: int32
# 查看数据格式
In [10]: type(t)
Out[10]: pandas.core.series.Series
# 查看数据类型
In [11]: t.dtype
Out[11]: dtype('int32')
# 更改数据类型
In [14]: t.astype(float)
Out[14]: 
A    0.0
B    1.0
C    2.0
D    3.0
E    4.0
F    5.0
G    6.0
H    7.0
I    8.0
J    9.0
dtype: float64

# (2)通过字典创建
In [9]: temp_dict={"name":"xiaohong","age":30,"tel":10086}
In [10]: a = pd.Series(temp_dict)
In [11]: a
Out[11]: 
name    xiaohong
age           30
tel        10086
dtype: object
# 查看数据类型
In [12]: a.dtype
Out[12]: dtype('O')

(2)pandas之Series切片和索引

In [15]: t.astype(int)
Out[15]: 
A    0
B    1
C    2
D    3
E    4
F    5
G    6
H    7
I    8
J    9
dtype: int32

In [16]: t[[1]]
Out[16]: 
B    1
dtype: int32

In [17]: t[2:10:2]
Out[17]: 
C    2
E    4
G    6
I    8
dtype: int32

In [18]: t[t>4]
Out[18]: 
F    5
G    6
H    7
I    8
J    9
dtype: int32

In [19]: t['F']
Out[19]: 5

In [21]: t[['A','F']]
Out[21]: 
A    0
F    5
dtype: int32

DataFrame:二维,Series容器

  DataFrame对象既有行索引,又有列索引
  行索引,表明不同行,横向索引,叫index,0轴,axis=0
  列索引,表明不同列,纵向索引,叫columns,1轴,axis=1

(1)pandas之DataFrame的创建

# (1)通过numpy对象创建
In [29]: pd.DataFrame(np.arange(12).reshape((3,4)),index=list("abc"),columns=list("WXYZ"))
Out[29]: 
   W  X   Y   Z
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11

# (2)通过字典创建
In [22]: d = {"name":["xiaoming","xiaohong"],"age":[20,32],"tel":[10086,10010]}
In [23]: pd.DataFrame(d)
Out[23]: 
       name  age    tel
0  xiaoming   20  10086
1  xiaohong   32  10010

# (3)通过列表创建
In [24]: e = [{"name":"xiaohong","age":32,"tel":10010},{"name":"xiaogang","tel":10000},{"name":"xiaowang","age":22}]
In [25]: pd.DataFrame(e)
Out[25]: 
       name   age      tel
0  xiaohong  32.0  10010.0
1  xiaogang   NaN  10000.0
2  xiaowang  22.0      NaN
pd.DataFrame(d)

(2)pandas之DataFrame的描述信息

基础属性描述
df.shape行数 列数
df.dtypes列数据类型
df.nidm数据维度
df.index行索引
df.columns列索引
df.values对象值,二维ndarray数组
常用查询描述
df.head(3)显示头部几行,默认5行
df.tail(3)显示末尾几行,默认5行
df.info()相关信息浏览:行数、列数、列索引列非空值个数、列类型,内存占用
df.describe()快速综合统计结果:计数、均值、标准差、最大值、四分位数、最小值

(3)pandas之loc与iloc

  • df.loc 通过标签索引行数据
  • df.iloc 通过位置获取行数据
In [29]: t = pd.DataFrame(np.arange(12).reshape((3,4)),index=list("ABC"),columns=list("WXYZ"))
In [30]: t
Out[30]: 
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11

⭕ 索引数据

   通过loc索引

In [31]: t.loc["A","W"]
Out[31]: 0

In [32]: t.loc["A",["W","Z"]]
Out[32]: 
W    0
Z    3
Name: A, dtype: int32

In [34]: t.loc[["A","C"],["W","Z"]]
Out[34]: 
   W   Z
A  0   3
C  8  11

# 冒号在loc里是闭合的
In [35]: t.loc["A":"C",["W","Z"]]
Out[35]: 
   W   Z
A  0   3
B  4   7
C  8  11

   iloc索引

In [37]: t.iloc[1:3,[2,3]]
Out[37]: 
    Y   Z
B   6   7
C  10  11

⭕ 赋值操作

In [38]: t
Out[38]: 
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11

# loc操作
In [39]: t.loc["A","Y"]=100

In [41]: t
Out[41]: 
   W  X    Y   Z
A  0  1  100   3
B  4  5    6   7
C  8  9   10  11

# iloc操作
In [42]: t.iloc[1:2,0:2]=200

In [43]: t
Out[43]: 
     W    X    Y   Z
A    0    1  100   3
B  200  200    6   7
C    8    9   10  11

四、pandas之缺失数据

  • 判断数据是否为NaN
    pd.isnull(df)
    pd.notnull(df)
  • 缺失数据的处理
    删除NaN所在的行列:dropna(axis=0, how=‘any’, inplace=False)
    填充数据:t.fillna(t.mean())
         t.fillna(t.median())
         t.fillna(0)
In [46]: t
Out[46]: 
     W    X     Y   Z
A  0.0  1.0   NaN   3
B  NaN  NaN   6.0   7
C  8.0  9.0  10.0  11

# any指当某一行存在NaN时,删除此行
In [47]: t.dropna(axis=0,how='any')
Out[47]: 
     W    X     Y   Z
C  8.0  9.0  10.0  11

# all指当某一行全部为NaN时,才删除此行
In [48]: t.dropna(axis=0,how='all')
Out[48]: 
     W    X     Y   Z
A  0.0  1.0   NaN   3
B  NaN  NaN   6.0   7
C  8.0  9.0  10.0  11
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值