python数据分析用什么笔记本好_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常用参数及其说明:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RUUmJsYW5r,size_16,color_FFFFFF,t_70

例:

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的常用属性:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RUUmJsYW5r,size_16,color_FFFFFF,t_70

例:

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

常用参数:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RUUmJsYW5r,size_16,color_FFFFFF,t_70

例:

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

索引类型的常用方法

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RUUmJsYW5r,size_16,color_FFFFFF,t_70

删除指定索引对象

.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时表示删除列。

常用参数如下所示:

20200606193133505.jpg

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

方法形式的运算

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RUUmJsYW5r,size_16,color_FFFFFF,t_70

例:

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值