Python(数据分析篇)--- Pandas框架【二】数据统计分析方法、文件操作方法

一、统计分析

1. 延用numpy统计分析方法

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

np.mean(df['age'])

输出:
    21.0

2. 其他方法

  • 极差
np.ptp(df['age'])

输出:
    2

3. pandas方法

(a)针对一维类型

df['age'].min()
df['age'].std()
df['age'].argmax()
  • 众数
df['age'].mode()

输出:
    0    20
    1    21
    2    22
    dtype: int64
  • 非空数目

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

df['name'].count()

输出:
    3
  • 频数统计
df['name'].value_counts()

输出:

zs    1
lh    1
ss    1
Name: name, dtype: int64

(b)针对二维类型

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

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

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

print(df.mode())

输出:

  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:数值型
print(df[['age','score']].describe())

输出:

        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:非数值型
print(df)
  name  age gender class address  score
a   ss   20      男  0831      北京     98
b   zs   22      男  0831      北京     90
c   lh   21      女   有问题      北京     92
print(df[['name','gender']].describe())

输出:

       name gender
count     3      3
unique    3      2
top      zs      男
freq      1      2
  • 例3:非数值型与数值型同时传入会默认忽略非数值型列,只返回数值型分析结果
print(df[['age','name']].describe())

输出:

        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方法
例:

pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx').head()

常用参数说明

(1)sheetname:

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

data = pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx',sheetname=1)
print(data.shape)

输出:
    (3647, 19)
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时,会将默认为列索引之前的行全部删掉

df = pd.read_excel('D:/qq文档/2393971222/FileRecv/meal_order_detail.xlsx',header=[0,1])
(3)names:

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

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:

跳过传入的几行

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
order = pd.read_csv(r'D:/qq文档/FileRecv/meal_order_info.csv',sep=',',encoding='gbk',engine='python')
print(order.head())

部分结果展示:

   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文件,目前已经淘汰使用

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

3、保存文件

order.to_excel('11.xlsx')
order.to_csv('11.csv')

补充内容

series构建

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

输出:

0    lx
1    ss
2    zs
dtype: object
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值