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