利用Python进行数据分析(三):pandas入门

本文介绍了Python数据分析库pandas的基础知识,包括Series和DataFrame两种数据结构,以及数据操作如索引、选取、过滤、算术运算、函数应用和排序等。pandas与NumPy、SciPy等工具结合,简化数据清洗和分析任务。文中详细讲解了如何创建、操作和分析DataFrame,并展示了如何使用loc和iloc进行精确选取。
摘要由CSDN通过智能技术生成

利用Python进行数据分析(三):pandas入门

pandas含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas经常和其它工具一同使用,如数值计算工具NumPy和SciPy,分析库statsmodels和scikit-learn,和数据可视化库matplotlib。pandas是基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理。

 import pandas as pd

Series和DataFrame用的次数非常多,所以将其引入本地命名空间中会更方便。

from pandas import Series,DataFrame

一、pandas的数据结构介绍

它的两个主要数据结构:Series和DataFrame。

1、Series

Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:

obj=pd.Series([1,2,3,4])
obj
Out[108]: 
0    1
1    2
2    3
3    4
dtype: int64

Series的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。你可以通过Series 的values和index属性获取其数组表示形式和索引对象。

obj.values
Out[109]: array([1, 2, 3, 4], dtype=int64)
obj.index
Out[110]: RangeIndex(start=0, stop=4, step=1)

创建的Series带有一个可以对各个数据点进行标记的索引

obj=pd.Series([1,2,3,4],index=["a","b","c","d"])
obj
Out[112]: 
a    1
b    2
c    3
d    4
dtype: int64

与普通NumPy数组相比,你可以通过索引的方式选取Series中的单个或一组值:

obj[["a","b","c"]]
Out[114]: 
a    1
b    2
c    3
dtype: int64

如果数据被存放在一个Python字典中,也可以直接通过这个字典来创建Series

dic={
   "a":1,"b":2,"c":3}
pd.Series(dic)
Out[117]: 
a    1
b    2
c    3
dtype: int64

如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。
可以传入排好序的字典的键以改变顺序:

sdata={
   "china":20000,"usa":1000,"australia":5000,"uk":10000}
data1=pd.Series(sdata,index=["usa","China","uk","Beijing"])
data1
Out[121]: 
usa         1000.0
China          NaN
uk         10000.0
Beijing        NaN
dtype: float64

对应的值找不到为NaN,“not a number”.
将使用缺失(missing)或NA表示缺失数据。pandas的isnull和notnull函数可用于检测缺失数据:

pd.isnull(data1)
Out[122]: 
usa        False
China       True
uk         False
Beijing     True
dtype: bool
pd.notnull(data1)
Out[123]: 
usa         True
China      False
uk          True
Beijing    False
dtype: bool

Series最重要的一个功能是,它会根据运算的索引标签自动对齐数据:

dict={
   "Beijing":1,"Chengdu":5,"Chongqing":6,"Guangdong":1}

import pandas as pd

pd.Series(dict)
Out[3]: 
Beijing      1
Chengdu      5
Chongqing    6
Guangdong    1
dtype: int64

x=pd.Series(dict)

dict2={
   "Beijing":3,"Chengdu":2,"Chongqing":4,"Guangdong":2}

y=pd.Series(dict2)

x+y
Out[7]: 
Beijing       4
Chengdu       7
Chongqing    10
Guangdong     3
dtype: int64

Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切。

x.name="economy"

x.index.name = "city"

x
Out[11]: 
city
Beijing      1
Chengdu      5
Chongqing    6
Guangdong    1
Name: economy, dtype: int64

Series的索引可以通过赋值的方式就地修改:

x.index=["1","2","3","4"]

x
Out[13]: 
1    1
2    5
3    6
4    1
Name: economy, dtype: int64

2、DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。

建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:

data={
   "state":["bj","sh","cq","cd"],"year":[2000,2001,2002,2004],"pop":[1,2,4,3]}

pd.DataFrame(data
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值