我是靠谱客的博主 爱笑云朵,这篇文章主要介绍Python(数据分析篇)--- Pandas框架【二】数据统计分析方法、文件操作方法一、统计分析二、文件读取补充内容,现在分享给大家,希望可以做个参考。

文章目录

  • 一、统计分析
    • 1. 延用numpy统计分析方法
    • 2. 其他方法
    • 3. pandas方法
      • (a)针对一维类型
      • (b)针对二维类型
      • (c)重要方法
  • 二、文件读取
    • 1、Excel文件读取
      • 基础方法
      • 常用参数说明
        • (1)sheetname:
        • (2)header:
        • (3)names:
        • (4)skiprows:
    • 2、读取csv文件
    • 3、保存文件
  • 补充内容
    • series构建

一、统计分析

1. 延用numpy统计分析方法

numpy中所有的统计分析方法都可以使用
此处仅举一例说明:

复制代码
1
2
3
4
np.mean(df['age']) 输出: 21.0

2. 其他方法

  • 极差
复制代码
1
2
3
4
np.ptp(df['age']) 输出: 2

3. pandas方法

(a)针对一维类型

复制代码
1
2
3
4
df['age'].min() df['age'].std() df['age'].argmax()
  • 众数
复制代码
1
2
3
4
5
6
7
8
9
10
df['age'].mode() 输出: 0 20 1 21 2 22 dtype: int64
  • 非空数目

返回某一列的非空元素的数目

复制代码
1
2
3
4
df['name'].count() 输出: 3
  • 频数统计
复制代码
1
2
df['name'].value_counts()

输出:

复制代码
1
2
3
4
5
6
7
8
zs 1 lh 1 ss 1 Name: name, dtype: int64

(b)针对二维类型

二维没有argmax方法,使用idxmax(),返回最大值所在的索引

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
df['score']=[98,90,92] print(df[['age','score']].idxmax()) # idxmax可加入axis,表示横(纵)向比较,默认为0 print(df[['age','score']].idxmax(axis=1)) 输出: age b score a dtype: object a score b score c score dtype: object

注:二维类型中没有频数统计方法,且没有替代方法。其他方法都可用于二维类型

复制代码
1
2
print(df.mode())

输出:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
name age gender class address score 0 lh 20 男 0831 北京 90 1 ss 21 NaN NaN NaN 92 2 zs 22 NaN NaN NaN 98

(c)重要方法

describe方法:

  1. 作用于数值型时,返回数据统计结果
  2. 作用于类别型时,返回count(非空数目)、unique(去重后有几个值)、top(众数)、freq(众数出现的频数)
  3. 数值型和类别型同时出现时,会自动过滤类别型,只保留数值型
  • 例1:数值型
复制代码
1
2
print(df[['age','score']].describe())

输出:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
age score count 3.0 3.000000 mean 21.0 93.333333 std 1.0 4.163332 min 20.0 90.000000 25% 20.5 91.000000 50% 21.0 92.000000 75% 21.5 95.000000 max 22.0 98.000000
  • 例2:非数值型
复制代码
1
2
print(df)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
name age gender class address score a ss 20 男 0831 北京 98 b zs 22 男 0831 北京 90 c lh 21 女 有问题 北京 92
复制代码
1
2
print(df[['name','gender']].describe())

输出:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
name gender count 3 3 unique 3 2 top zs 男 freq 1 2
  • 例3:非数值型与数值型同时传入会默认忽略非数值型列,只返回数值型分析结果
复制代码
1
2
print(df[['age','name']].describe())

输出:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
age count 3.0 mean 21.0 std 1.0 min 20.0 25% 20.5 50% 21.0 75% 21.5 max 22.0

二、文件读取

1、Excel文件读取

基础方法

使用read_excel方法
例:

复制代码
1
2
pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx').head()

常用参数说明

(1)sheetname:

切换sheet表格,可以用索引,也可以用表名,多表同时读取使用列表,传入None时获取所有表格

复制代码
1
2
3
4
5
data = pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx',sheetname=1) print(data.shape) 输出: (3647, 19)
复制代码
1
2
3
4
5
6
data = pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx',sheetname=None) print('查看当前表格中所有sheet的名称:n',data.keys()) 输出: 查看当前表格中所有sheet的名称: odict_keys(['meal_order_detail1', 'meal_order_detail2', 'meal_order_detail3'])

(2)header:

表示选择哪一行作为列索引(表头),默认是第一行,当header不为0时,会将默认为列索引之前的行全部删掉

复制代码
1
2
df = pd.read_excel('D:/qq文档/2393971222/FileRecv/meal_order_detail.xlsx',header=[0,1])

(3)names:

当文件中没有给出表头时,需要将header设置为None,并且传入与列数量一致的list,names=[ ]

复制代码
1
2
pd.read_excel('D:/qq文档/2393971222/FileRecv/meal_order_detail.xlsx',names = np.arange(19)).head()

输出部分展示:

0123456789101112131415161718
02956417610062NaNNaN蒜蓉生蚝0149NaN2016-08-01 11:05:36NaNNaNNaN0NaNNaNcaipu/104001.jpg1442
12958417609957NaNNaN蒙古烤羊腿0148NaN2016-08-01 11:07:07NaNNaNNaN0NaNNaNcaipu/202003.jpg1442
22961417609950NaNNaN大蒜苋菜0130NaN2016-08-01 11:07:40NaNNaNNaN0NaNNaNcaipu/303001.jpg1442
32966417610038NaNNaN芝麻烤紫菜0125NaN2016-08-01 11:11:11NaNNaNNaN0NaNNaNcaipu/105002.jpg1442
42968417610003NaNNaN蒜香包0113NaN2016-08-01 11:11:30NaNNaNNaN0NaNNaNcaipu/503002.jpg1442

(4)skiprows:

跳过传入的几行

复制代码
1
2
3
4
5
6
data = pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx',skiprows=[0,1]) print(data.head()) # 从头开始读,读几行传入几,默认5行 print(data.tail()) # 从尾部开始读

输出结果略

2、读取csv文件

csv属于文本文件,逗号分隔符文件,编码一般为gbk

参数说明:

  1. sep:元素分隔符,csv文件中默认分隔符为逗号;
  2. engine:底层编译方式,默认为C语言,如果遇到编码问题,可以尝试将engine改为python
复制代码
1
2
3
order = pd.read_csv(r'D:/qq文档/FileRecv/meal_order_info.csv',sep=',',encoding='gbk',engine='python') print(order.head())

部分结果展示:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
info_id emp_id number_consumers mode dining_table_id 0 417 1442 4 NaN 1501 1 301 1095 3 NaN 1430 2 413 1147 6 NaN 1488 3 415 1166 4 NaN 1502 4 392 1094 10 NaN 1499 [5 rows x 21 columns]

read_table即可以读csv文件,也可以读excel文件,目前已经淘汰使用

复制代码
1
2
pd.read_table(r'D:/qq文档/2393971222/FileRecv/meal_order_info.csv',sep=',',encoding='gbk',engine='python').head()

3、保存文件

复制代码
1
2
3
order.to_excel('11.xlsx') order.to_csv('11.csv')

补充内容

series构建

复制代码
1
2
pd.Series(data=['lx','ss','zs'],index=[0,1,2])

输出:

复制代码
1
2
3
4
5
6
7
8
0 lx 1 ss 2 zs dtype: object

最后

以上就是爱笑云朵最近收集整理的关于Python(数据分析篇)--- Pandas框架【二】数据统计分析方法、文件操作方法一、统计分析二、文件读取补充内容的全部内容,更多相关Python(数据分析篇)---内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部