Python数据分析——pandas统计分析基础 (一)

Python数据分析—— pandas统计分析基础 (一)

Pandas—数据分析核心库

  • pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
  • 提供了一系列能够快速、便捷地处理结构化数据的数据结构和函数。
  • 高性能的数组计算功能以及电子表格和关系型数据库(如 SQL)灵活的数据处理功能。
  • 复杂精细的索引功能,以便便捷地完成重塑、切片和切块、聚合及选取数据子集等操作

文本文件读取

  • open函数来打开文件,read函数用来读取数据。但是读取进来的数据都是str格式,非常不方便我们进行分析。pandas提供了read_csv函数可以将文件按照固定的格式进行读取,函数能够自动解析数据类型,铁架列明与索引等很多功能,能够以结构化的dataframe形式存储数据。

  • csv是一种逗号分隔的文件格式,因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数字和文本)。

  • 使用read_table来读取文本文件

pandas.read_table(filepath_or_buffer, sep=’\t’, header=’infer’, names=None, 
                  index_col=None, dtype=None, engine=None, nrows=None)
  • 使用read_csv函数来读取csv文件
pandas.read_csv(filepath_or_buffer, sep=’\t’, header=’infer’, names=None, 
                index_col=None, dtype=None, engine=None, 
                nrows=None)
  • read_table和read_csv常用参数及其说明:
    在这里插入图片描述
    例:
import pandas as pd
## 使用read_table读取订单信息表
order = pd.read_table('meal_order_info.csv', sep = ',',encoding = 'gbk')
print('使用read_table读取的订单信息表的长度为:',len(order))

## 使用read_csv读取订单信息表
order1 = pd.read_csv(meal_order_info.csv',   encoding = 'gbk')
print('使用read_csv读取的订单信息表的长度为:',len(order1))

注:1.不要尝试去读取excel文件,最好使用通用的csv或者txt格式
2.注意编码问题,使用encoding参数
3.注意处理报错行
4.read_table和read_csv函数中的sep参数是指定文本的分隔符的,如果分隔符指定错误,在读取数据的时候,每一行数据将连成一片

DataFrame与Series

  • dataframe是二维结构化数据,series是一维数据。dataframe有一个或者多个series组成,dataframe的一行或者一列就是一个series
Series
  • Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组 与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series

例:

>>>obj = Series([4, 7, -5, 3])
>>>obj
0    4
1    7
2   -5
3    3
dtype: int64
DataFrame
  • DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。
  • DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)
  • DataFrame的常用属性:
    在这里插入图片描述
    例:
import pandas as pd
order_info=pd.read_csv('meal_order_info.csv',sep=',',encoding='gbk')
print(order_info.columns)
print(order_info.head())

detail=pd.read_excel('meal_order_detail.xlsx',encoding='gbk')
## 查看DataFrame的元素个数
print(‘订单详情表的索引为:’, detail.index) ## 查看DataFrame的索引
print('订单详情表的元素个数为:', detail.size)
print(‘订单详情表的列名为:’, detail.columns) ## 查看DataFrame的列名
print('订单详情表的维度数为:', detail.ndim) ## 查看DataFrame的维度数
print('订单详情表的形状为:', detail.shape) ## 查看DataFrame的形状
DataFrame类型
  • 从二维ndarray对象创建
import pandas as pd
import numpy as np

d = pd.DataFrame(np.arange(10).reshape(2,5))
d

Out[10]: 
   0  1  2  3  4
0  0  1  2  3  4
1  5  6  7  8  9
  • 从一维ndarray对象字典创建

例:

import pandas as pd

dt = {'one':pd.Series([1,2,3],index=['a','b','c']),
'two':pd.Series([9,8,7,6],index=['a','b','c','d'])}
d = pd.DataFrame(dt)
d

Out[14]: 
   one  two
a  1.0    9
b  2.0    8
c  3.0    7
d  NaN    6

pd.DataFrame(dt,index=['b','c','d'],columns=['two','three'])
Out[16]: 
   two three
b    8   NaN
c    7   NaN
d    6   NaN
  • 从列表类型的字典创建

例:

import pandas as pd

d1 = {'one':[1,2,3,4],'two':[9,8,7,6]}
d = pd.DataFrame(d1,index = ['a','b','c','d'])
d

Out[20]: 
   one  two
a    1    9
b    2    8
c    3    7
d    4    6
重新索引
  • .reindex()能够改变或重排Series和DataFrame索引
.reindex(index=None,columns=None,...)

例:

import pandas as pd

d1 = {'城市':['北京','上海','广州','深圳','沈阳'],
'环比':[101.5,101.2,101.3,102.0,100.1],
'同比':[120.7,127.3,119.4,140.9,101.4],
'定基':[121.4,127.8,120.0,145.5,101.6]}
d = pd.DataFrame(d1,index=['c1','c2','c3','c4','c5'])
d

Out[32]: 
    城市     环比     同比     定基
c1  北京  101.5  120.7  121.4
c2  上海  101.2  127.3  127.8
c3  广州  101.3  119.4  120.0
c4  深圳  102.0  140.9  145.5
c5  沈阳  100.1  101.4  101.6

d = d.reindex(index=['c5','c4','c3','c2','c1'])
d

Out[34]: 
    城市     环比     同比     定基
c5  沈阳  100.1  101.4  101.6
c4  深圳  102.0  140.9  145.5
c3  广州  101.3  119.4  120.0
c2  上海  101.2  127.3  127.8
c1  北京  101.5  120.7  121.4
  • 常用参数:
    在这里插入图片描述
    例:
newc = d.columns.insert(4,'新增')
newd = d.reindex(columns=newc,fill_value=200)
newd

Out[37]: 
    城市     环比     同比     定基   新增
c5  沈阳  100.1  101.4  101.6  200
c4  深圳  102.0  140.9  145.5  200
c3  广州  101.3  119.4  120.0  200
c2  上海  101.2  127.3  127.8  200
c1  北京  101.5  120.7  121.4  200
索引类型的常用方法

在这里插入图片描述

删除指定索引对象
  • .drop()能够删除Series和DataFrame指定行或列索引
d

Out[52]: 
    城市     环比     同比     定基
c5  沈阳  100.1  101.4  101.6
c4  深圳  102.0  140.9  145.5
c3  广州  101.3  119.4  120.0
c2  上海  101.2  127.3  127.8
c1  北京  101.5  120.7  121.4

d.drop('c5')

Out[53]: 
    城市     环比     同比     定基
c4  深圳  102.0  140.9  145.5
c3  广州  101.3  119.4  120.0
c2  上海  101.2  127.3  127.8
c1  北京  101.5  120.7  121.4

d.drop('同比',axis=1)
Out[54]: 
    城市     环比     定基
c5  沈阳  100.1  101.6
c4  深圳  102.0  145.5
c3  广州  101.3  120.0
c2  上海  101.2  127.8
c1  北京  101.5  121.4
  • axis为0时表示删除行,axis为1时表示删除列。
  • 常用参数如下所示:
    在这里插入图片描述

Pandas数据类型运算

  • 算术运算法则:算术运算根据行列索引,补齐后运算,运算默认产生浮点数
  • 补齐时缺项填充NaN(空值)
  • 采用+ - * / 符号进行的二元运算产生新的对象

例:

import pandas as pd
import numpy as np

a = pd.DataFrame(np.arange(12).reshape(3,4))
a

Out[58]: 
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

b = pd.DataFrame(np.arange(20).reshape(4,5))
b

Out[60]: 
    0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19

a + b
Out[61]: 
      0     1     2     3   4
0   0.0   2.0   4.0   6.0 NaN
1   9.0  11.0  13.0  15.0 NaN
2  18.0  20.0  22.0  24.0 NaN
3   NaN   NaN   NaN   NaN NaN

a * b
Out[62]: 
      0     1      2      3   4
0   0.0   1.0    4.0    9.0 NaN
1  20.0  30.0   42.0   56.0 NaN
2  80.0  99.0  120.0  143.0 NaN
3   NaN   NaN    NaN    NaN NaN
方法形式的运算

在这里插入图片描述

例:

b.add(a,fill_value = 100)
Out[63]: 
       0      1      2      3      4
0    0.0    2.0    4.0    6.0  104.0
1    9.0   11.0   13.0   15.0  109.0
2   18.0   20.0   22.0   24.0  114.0
3  115.0  116.0  117.0  118.0  119.0

a.mul(b,fill_value = 0)
Out[64]: 
      0     1      2      3    4
0   0.0   1.0    4.0    9.0  0.0
1  20.0  30.0   42.0   56.0  0.0
2  80.0  99.0  120.0  143.0  0.0
3   0.0   0.0    0.0    0.0  0.0

注:fill_value参数替代NaN,替代后参与运算

比较运算法则
  • 比较运算只能比较相同索引的元素,不进行补齐
  • 采用> < >= <= == !=等符号进行的二元运算产生布尔对象

例:

import pandas as pd

import numpy as np

a = pd.DataFrame(np.arange(12).reshape(3,4))

a
Out[68]: 
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

b = pd.DataFrame(np.arange(12,0,-1).reshape(3,4))
b

Out[71]: 
    0   1   2  3
0  12  11  10  9
1   8   7   6  5
2   4   3   2  1

a > b
Out[72]: 
       0      1      2      3
0  False  False  False  False
1  False  False  False   True
2   True   True   True   True

a == b
Out[73]: 
       0      1      2      3
0  False  False  False  False
1  False  False   True  False
2  False  False  False  False

注:用维度运算,尺寸一致

  • 13
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值