python--数据分析pandas

1.pandas概述

Pandas是进行科学数据分析中另一个比较常用的数据库,基于NumPy,但加入了更多的高级数据结构以及操作工具,进一步简化了NumPy等运算与应用。

1.1安装

pip install pandas

可以通过import库检查Pandas是否安装成功

from pandas import Seeries,DataFrame
import pandas as pd

1.2Series数据结构

与一维数组相似,由一组数据以及对应的数据标签组成,索引在左边,值在右边。
如果没有为数据规定对应的索引,则会自动创建一个范围为0到n-1的整数索引;通过values和index属性获取数组表示形式和索引对象。
在这里插入图片描述
指定索引

obj = Series([2,7,-5,3],index = ['d','b','a','c'])

在这里插入图片描述

1.3DataFrame

是表格类型,它可以有很多有序的列,每一列都可以设置不同的内容与类型,包括字符串、数值、布尔等。
可以采用行或者列的形式进行索引,

data = {'name':['Tom','Marry','Herry'],'year':[1996,1997,1998],'grade':[86,79,93]}

frame = DataFrame(data)

frame
Out[20]: 
    name  year  grade
0    Tom  1996     86
1  Marry  1997     79
2  Herry  1998     93
#指定列顺序,则会按照指定顺序进行排列
DataFrame(data,columns = ['year','grade','name'])
Out[21]: 
   year  grade   name
0  1996     86    Tom
1  1997     79  Marry
2  1998     93  Herry
#可以获取DataFrame的某一列作为一个Series,返回的Series拥有与原来相同的索引
frame['name']
Out[22]: 
0      Tom
1    Marry
2    Herry
Name: name, dtype: object

frame.year
Out[23]: 
0    1996
1    1997
2    1998
Name: year, dtype: int64

1.4基本操作

1.4.1. 重新索引

可以创建与旧索引不同的索引,能够适应新索引对象。
reindex:根据新索引进行重排,同时如果某个索引值当前不存在,就引起缺失值。
在这里插入图片描述

1.4.2. 丢弃

drop:返回一个丢弃了指定行或列中的新对象。
(就是删除后的对象)
例一:

import numpy as np
obj=Series(np.arange(5.),index=['a','b','c','d','e'])

obj
Out[34]: 
a    0.0
b    1.0
c    2.0
d    3.0
e    4.0
dtype: float64

new_obj = obj.drop('c')

new_obj
Out[36]: 
a    0.0
b    1.0
d    3.0
e    4.0
dtype: float64

例二:

import numpy as np
from pandas import DataFrame
data = DataFrame(np.arange(16).reshape((4,4)),index=['math','English','Chinese','Sports'],columns = ['one','two','three','four'])

data
Out[16]: 
         one  two  three  four
math       0    1      2     3
English    4    5      6     7
Chinese    8    9     10    11
Sports    12   13     14    15

data.drop('Chinese')
Out[17]: 
         one  two  three  four
math       0    1      2     3
English    4    5      6     7
Sports    12   13     14    15

data.drop('two',axis = 1)
Out[18]: 
         one  three  four
math       0      2     3
English    4      6     7
Chinese    8     10    11
Sports    12     14    15
1.4.3. 索引

Series索引的方式类似与NumPy数组的索引,但它的索引和切片不仅可以用整数,还可以用对应的标记。

import numpy as np
from pandas import Series,DataFrame
obj = Series(np.arange(4.),index = ['a','b','c','d'])

obj
Out[20]: 
a    0.0
b    1.0
c    2.0
d    3.0
dtype: float64

obj['b']
Out[21]: 1.0

obj[1]
Out[22]: 1.0

obj[['b','c']]
Out[23]: 
b    1.0
c    2.0
dtype: float64

obj[1:3]
Out[24]: 
b    1.0
c    2.0
dtype: float64

切片运算与普通的python切片运算是不同的,你会发现其末端是包含在内的。

1.4.4. 算术运算

最常用的功能之一,它是首先保证索引对应相同,再对相应的内容进行加减等操作。如果存在不相同的索引对,则结果是该索引对的并集

import numpy as np
from pandas import Series,DataFrame
df1 = DataFrame(np.arange(9.).reshape((3,3)),columns=list('bcd'),index=['Tom','Mary','Alice'])
df2 = DataFrame(np.arange(12.).reshape((4,3)),columns=list('bde'),index=['Mary','Alice','Mike','Tom'])

df1
Out[32]: 
         b    c    d
Tom    0.0  1.0  2.0
Mary   3.0  4.0  5.0
Alice  6.0  7.0  8.0

df2
Out[33]: 
         b     d     e
Mary   0.0   1.0   2.0
Alice  3.0   4.0   5.0
Mike   6.0   7.0   8.0
Tom    9.0  10.0  11.0

df1+df2
Out[34]: 
         b   c     d   e
Alice  9.0 NaN  12.0 NaN
Mary   3.0 NaN   6.0 NaN
Mike   NaN NaN   NaN NaN
Tom    9.0 NaN  12.0 NaN

2.数据清洗

很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要对使数据分析更加准确,就需要对这些没有用的数据进行处理

2.1清洗数据

  1. 使用 dropna() 方法,要删除包含空字段的行;
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
  1. 如果你要修改源数据 DataFrame, 可以使用 inplace = True 参数;
  2. 通过 isnull() 判断各个单元格是否为空;
  3. Pandas使用 mean()、median() 和 mode() 方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数);
  4. 使用 mode() 方法计算列的众数并替换空单元格

2.2清洗重复数据

如果我们要清洗重复数据,可以使用 duplicated() 和 drop_duplicates() 方法。
如果对应的数据是重复的,duplicated() 会返回 True,否则返回 False。

3.一点小技巧

  • shift+enter:将关闭多行编辑并执行任何输入的代码;
  • ctrl+enter:将开启多行编辑;
  • 使用索引字段ix,可以从DataFrame中选取行和列的子集;
obj.ix[val]选取DataFrame的单个行或一组行
obj.ix[:,val]选取单个列或列子集
obj.ix[val1,val2同时选取行和列
  • 可以使用 to_csv() 方法将 DataFrame 存储为 csv 文件;
  • to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 … 代替;
  • head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行;
  • tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。;
  • info() 方法返回表格的一些基本信息

最后,看到这里的朋友们也可以看看菜鸟教程,适合像我一样的新手!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unicornlyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值