wangwei
机器学习, 数据采集, 数据分析, web网站,IS-RPA,APP
python基础 Pandas 数据处理 • 0 回帖 • 650 浏览 • 2019-08-18 15:49:35


机器学习, 数据采集, 数据分析, web网站,IS-RPA,APP
python基础 Pandas 数据处理 • 0 回帖 • 650 浏览 • 2019-08-18 15:49:35
pandas 简单用法
#!/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @virtualenv:workon
# @contact: contact information
# @Desc:Code descripton
__author__ = '未昔/AngelFate'
__date__ = '2019/8/18 13:11'
import pandas as pd
data = pd.read_excel('1.xlsx',encoding='utf8')
print('\n全部数据:',data)
print('\n打印前五个数据:')
print(data.head(5))
print('\n打印后三个数据:')
print(data.tail(3))
print('\n计算IQ列总和:')
print(sum(data['IQ']))
print(sum(data.IQ))
print('\n找出IQ>-995的行数据:')
print(data['IQ']>-995)
print(data[data['IQ']>-995])
print('\n小猪的数据:')
print(data[data['姓名'].str.contains('小猪')])
# 找出 指定列内容的数据
print('\n找出 指定列内容的数据:')
print(data[data["IQ"].isin([-999,-996,-991])])
print(data[data["IQ"].isin([-999,-996,-991])]['智商'])
print('\n指定 多列 指定范围的数据\n')
print(data.query(" IQ>-995 & (智商>-35 | 年龄<18) "))
print('\n根据已有的列内容,形成新的列:')
data.loc[data['IQ'] > -990, '天赋'] = '好'
data.loc[data['IQ'] <= -990, '天赋'] = '差'
print(data)
data.to_csv('to_02.csv',index=False)
print('\n根据已有的列内容,形成新的列:')
data.loc[(data['IQ'] < -995) & (data['年龄'] < 5), '药房'] = '无药可救'
data.loc[(data['IQ'] <= -991) & (data['年龄'] >10), '药房'] = '还救一下'
print(data)
print(data.dropna())
# df.loc[A,B]。 isin比where更为灵活
print('\n选取指定行 的数据: ')
print(data.loc[1:4,['姓名','IQ']])
print(data.loc[data['姓名'].isin(['猪1','猪8'])])
print(data.loc[data['姓名'].str.contains('1')])
print('\n iloc:') # data.iloc[A,B] # A:行,B:列
print(data.iloc[1:4,:])
print('\n map与lambda:')
alist = [1,2,3,4]
map(lambda s : s+1, alist)
# 年龄列,前三个数据,通过指定格式进行变换
print(data['年龄'].map(lambda s:s*2+1)[0:3])
# 0,2,4,6四列的内容去平方。3,5,7,9
print(data['年龄'].map(lambda s:s**2)[0:7:2])
# 使用DataFrame模糊筛选数据(类似SQL中的LIKE)
# 使用正则表达式进行模糊匹配,*匹配0或无限次,?匹配0或1次
print('\n contains 用正则表达式进行模糊匹配,*匹配0或无限次,?匹配0或1次')
print(data[data['姓名'].str.contains(r'.*?母猪.*')])
print()
print(data[data['姓名'].str.contains("母猪")])
print()
print(data[data['姓名'].str.contains(r".*母猪.*")])
# # 下面两句效果一致
# df[df['商品名称'].str.contains("四件套")]
# df[df['商品名称'].str.contains(r".*四件套.*")]
结果
E:\Envs\ai\Scripts\python.exe E:/python/Study/wangweidabendan/wds2.py
全部数据: 姓名 年龄 智商 IQ
0 小猪1 3 -50 -1000
1 小猪2 4 -49 -999
2 小猪3 5 -48 -998
3 小猪4 6 -47 -997
4 小猪5 7 -46 -996
5 小猪6 8 -45 -995
6 小猪7 9 -44 -994
7 小猪8 10 -43 -993
8 小猪9 11 -42 -992
9 小猪10 12 -41 -991
10 小小猪1 13 -40 -990
11 小小猪2 14 -39 -989
12 小小猪3 15 -38 -988
13 小小猪4 16 -37 -987
14 小小猪5 17 -36 -986
15 小小猪6 18 -35 -985
16 小pig小母猪1 15 20 -8785786
17 小pig小母猪2 16 21 -8785785
18 小pig小母猪3 17 22 -8785784
19 超级小pig1 18 23 -8785783
20 超级小pig2 19 24 -8785782
21 超级小pig3 20 25 -8785781
打印前五个数据:
姓名 年龄 智商 IQ
0 小猪1 3 -50 -1000
1 小猪2 4 -49 -999
2 小猪3 5 -48 -998
3 小猪4 6 -47 -997
4 小猪5 7 -46 -996
打印后三个数据:
姓名 年龄 智商 IQ
19 超级小pig1 18 23 -8785783
20 超级小pig2 19 24 -8785782
21 超级小pig3 20 25 -8785781
计算IQ列总和:
-52730581
-52730581
找出IQ>-995的行数据:
0 False
1 False
2 False
3 False
4 False
5 False
6 True
7 True
8 True
9 True
10 True
11 True
12 True
13 True
14 True
15 True
16 False
17 False
18 False
19 False
20 False
21 False
Name: IQ, dtype: bool
姓名 年龄 智商 IQ
6 小猪7 9 -44 -994
7 小猪8 10 -43 -993
8 小猪9 11 -42 -992
9 小猪10 12 -41 -991
10 小小猪1 13 -40 -990
11 小小猪2 14 -39 -989
12 小小猪3 15 -38 -988
13 小小猪4 16 -37 -987
14 小小猪5 17 -36 -986
15 小小猪6 18 -35 -985
小猪的数据:
姓名 年龄 智商 IQ
0 小猪1 3 -50 -1000
1 小猪2 4 -49 -999
2 小猪3 5 -48 -998
3 小猪4 6 -47 -997
4 小猪5 7 -46 -996
5 小猪6 8 -45 -995
6 小猪7 9 -44 -994
7 小猪8 10 -43 -993
8 小猪9 11 -42 -992
9 小猪10 12 -41 -991
10 小小猪1 13 -40 -990
11 小小猪2 14 -39 -989
12 小小猪3 15 -38 -988
13 小小猪4 16 -37 -987
14 小小猪5 17 -36 -986
15 小小猪6 18 -35 -985
找出 指定列内容的数据:
姓名 年龄 智商 IQ
1 小猪2 4 -49 -999
4 小猪5 7 -46 -996
9 小猪10 12 -41 -991
1 -49
4 -46
9 -41
Name: 智商, dtype: int64
指定 多列 指定范围的数据
姓名 年龄 智商 IQ
6 小猪7 9 -44 -994
7 小猪8 10 -43 -993
8 小猪9 11 -42 -992
9 小猪10 12 -41 -991
10 小小猪1 13 -40 -990
11 小小猪2 14 -39 -989
12 小小猪3 15 -38 -988
13 小小猪4 16 -37 -987
14 小小猪5 17 -36 -986
根据已有的列内容,形成新的列:
姓名 年龄 智商 IQ 天赋
0 小猪1 3 -50 -1000 差
1 小猪2 4 -49 -999 差
2 小猪3 5 -48 -998 差
3 小猪4 6 -47 -997 差
4 小猪5 7 -46 -996 差
5 小猪6 8 -45 -995 差
6 小猪7 9 -44 -994 差
7 小猪8 10 -43 -993 差
8 小猪9 11 -42 -992 差
9 小猪10 12 -41 -991 差
10 小小猪1 13 -40 -990 差
11 小小猪2 14 -39 -989 好
12 小小猪3 15 -38 -988 好
13 小小猪4 16 -37 -987 好
14 小小猪5 17 -36 -986 好
15 小小猪6 18 -35 -985 好
16 小pig小母猪1 15 20 -8785786 差
17 小pig小母猪2 16 21 -8785785 差
18 小pig小母猪3 17 22 -8785784 差
19 超级小pig1 18 23 -8785783 差
20 超级小pig2 19 24 -8785782 差
21 超级小pig3 20 25 -8785781 差
根据已有的列内容,形成新的列:
姓名 年龄 智商 IQ 天赋 药房
0 小猪1 3 -50 -1000 差 无药可救
1 小猪2 4 -49 -999 差 无药可救
2 小猪3 5 -48 -998 差 NaN
3 小猪4 6 -47 -997 差 NaN
4 小猪5 7 -46 -996 差 NaN
5 小猪6 8 -45 -995 差 NaN
6 小猪7 9 -44 -994 差 NaN
7 小猪8 10 -43 -993 差 NaN
8 小猪9 11 -42 -992 差 还救一下
9 小猪10 12 -41 -991 差 还救一下
10 小小猪1 13 -40 -990 差 NaN
11 小小猪2 14 -39 -989 好 NaN
12 小小猪3 15 -38 -988 好 NaN
13 小小猪4 16 -37 -987 好 NaN
14 小小猪5 17 -36 -986 好 NaN
15 小小猪6 18 -35 -985 好 NaN
16 小pig小母猪1 15 20 -8785786 差 还救一下
17 小pig小母猪2 16 21 -8785785 差 还救一下
18 小pig小母猪3 17 22 -8785784 差 还救一下
19 超级小pig1 18 23 -8785783 差 还救一下
20 超级小pig2 19 24 -8785782 差 还救一下
21 超级小pig3 20 25 -8785781 差 还救一下
姓名 年龄 智商 IQ 天赋 药房
0 小猪1 3 -50 -1000 差 无药可救
1 小猪2 4 -49 -999 差 无药可救
8 小猪9 11 -42 -992 差 还救一下
9 小猪10 12 -41 -991 差 还救一下
16 小pig小母猪1 15 20 -8785786 差 还救一下
17 小pig小母猪2 16 21 -8785785 差 还救一下
18 小pig小母猪3 17 22 -8785784 差 还救一下
19 超级小pig1 18 23 -8785783 差 还救一下
20 超级小pig2 19 24 -8785782 差 还救一下
21 超级小pig3 20 25 -8785781 差 还救一下
选取指定行 的数据:
姓名 IQ
1 小猪2 -999
2 小猪3 -998
3 小猪4 -997
4 小猪5 -996
Empty DataFrame
Columns: [姓名, 年龄, 智商, IQ, 天赋, 药房]
Index: []
姓名 年龄 智商 IQ 天赋 药房
0 小猪1 3 -50 -1000 差 无药可救
9 小猪10 12 -41 -991 差 还救一下
10 小小猪1 13 -40 -990 差 NaN
16 小pig小母猪1 15 20 -8785786 差 还救一下
19 超级小pig1 18 23 -8785783 差 还救一下
iloc:
姓名 年龄 智商 IQ 天赋 药房
1 小猪2 4 -49 -999 差 无药可救
2 小猪3 5 -48 -998 差 NaN
3 小猪4 6 -47 -997 差 NaN
map与lambda:
0 7
1 9
2 11
Name: 年龄, dtype: int64
0 9
2 25
4 49
6 81
Name: 年龄, dtype: int64
contains 用正则表达式进行模糊匹配,*匹配0或无限次,?匹配0或1次
姓名 年龄 智商 IQ 天赋 药房
16 小pig小母猪1 15 20 -8785786 差 还救一下
17 小pig小母猪2 16 21 -8785785 差 还救一下
18 小pig小母猪3 17 22 -8785784 差 还救一下
姓名 年龄 智商 IQ 天赋 药房
16 小pig小母猪1 15 20 -8785786 差 还救一下
17 小pig小母猪2 16 21 -8785785 差 还救一下
18 小pig小母猪3 17 22 -8785784 差 还救一下
姓名 年龄 智商 IQ 天赋 药房
16 小pig小母猪1 15 20 -8785786 差 还救一下
17 小pig小母猪2 16 21 -8785785 差 还救一下
18 小pig小母猪3 17 22 -8785784 差 还救一下
Process finished with exit code 0
Process finished with exit code 0