python(十) pandas
0 pandas介绍
Pandas是一款开放源码的BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具。
使用import pandas as pd
导入pandas包并且起个响亮的名字pd
1 读取数据的方式
-
1.1准备数据表csv文件
- it01.csv
- it02.csv
- 创建的时候记得选编码
- 在桌面上我们打开的文件是表格形式,但是我们在idea里用txt方式打开就能发现数据是以
,
号分隔的。
import pandas as pd
#编码以gb2312从文件读取csv文件,
itInfo = pd.read_csv('it01.csv',encoding='gb2312')
print(type(itInfo))
print("---------------------")
print(itInfo.dtypes)
print("---------------------")
print(itInfo)
测试结果:
![](https://img2018.cnblogs.com/blog/1235870/201902/1235870-20190222154023142-1630447778.png)
2 展现数据的方式
-
2.1数据列名集合及数据维度
import pandas as pd
itInfo = pd.read_csv('it01.csv',encoding='gb2312')
#查询几行几列数据
print(itInfo.shape)
print("---------------------")
#查询列名集合
print(itInfo.columns)
测试结果:
(8, 3)
Index(['name', 'confidence', 'money'], dtype='object')
-
2.2数据查询
import pandas as pd
#编码以gb2312从文件读取csv文件,
itInfo = pd.read_csv('it01.csv',encoding='gb2312')
print("案例1---------------------")
#读取前5条数据
print(itInfo.head())
print("案例2---------------------")
#读取前2条数据
print(itInfo.head(2))
print("案例3---------------------")
#读取后2条数据
print(itInfo.tail(2))
print("案例4---------------------")
#读取第几条数据,下标从0开始
print(itInfo.loc[0])
print("案例5---------------------")
#读取第4条到第7条数据
print(itInfo.loc[3:6])
print("案例6---------------------")
#读取所有name字段的值
print(itInfo['name'])
测试结果:
>案例1---------------------
> name confidence money
>0 张三 55 5555.55
>1 李四 60 6666.66
>2 王五 70 7777.77
>3 赵六 80 8888.88
>4 哈八 90 9999.99
>案例2---------------------
> name confidence money
>0 张三 55 5555.55
>1 李四 60 6666.66
>案例3---------------------
> name confidence money
>6 吴十 33 3333.33
>7 十一 44 4444.44
>案例4---------------------
>name 张三
>confidence 55
>money 5555.55
>Name: 0, dtype: object
>案例5---------------------
> name confidence money
>3 赵六 80 8888.88
>4 哈八 90 9999.99
>5 西九 100 10000.11
>6 吴十 33 3333.33
>案例6---------------------
>0 张三
>1 李四
>2 王五
>3 赵六
>4 哈八
>5 西九
>6 吴十
>7 十一
>Name: name, dtype: object
-
2.3数据处理
import pandas as pd
#编码以gb2312从文件读取csv文件,
itInfo = pd.read_csv('it01.csv',encoding='gb2312')
print("案例1---------------------")
#读取全部数据
print(itInfo)
print("案例2---------------------")
#把信任度进行归一化操作
confidence = itInfo['confidence']/100
print(confidence)
print("案例3---------------------")
#新增一个数据列
cMoney = itInfo['money'] / itInfo['confidence']
itInfo['cMoney'] = cMoney
print(itInfo)
print("案例4---------------------")
#confidence,最小值,平均值
print(itInfo['confidence'].max())
print(itInfo['confidence'].min())
print(itInfo['confidence'].mean())
print("案例5---------------------")
#根据工资排序:inplace是否替换源,ascending倒序设置
itInfo.sort_values('money',inplace=True,ascending=False)
print(itInfo)
测试结果:
>案例1---------------------
> name confidence money
>0 张三 55 5555.55
>1 李四 60 6666.66
>2 王五 70 7777.77
>3 赵六 80 8888.88
>4 哈八 90 9999.99
>5 西九 100 10000.11
>6 吴十 33 3333.33
>7 十一 44 4444.44
>案例2---------------------
>0 0.55
>1 0.60
>2 0.70
>3 0.80
>4 0.90
>5 1.00
>6 0.33
>7 0.44
>Name: confidence, dtype: float64
>案例3---------------------
> name confidence money cMoney
>0 张三 55 5555.55 101.0100
>1 李四 60 6666.66 111.1110
>2 王五 70 7777.77 111.1110
>3 赵六 80 8888.88 111.1110
>4 哈八 90 9999.99 111.1110
>5 西九 100 10000.11 100.0011
>6 吴十 33 3333.33 101.0100
>7 十一 44 4444.44 101.0100
>案例4---------------------
>100
>33
>66.5
>案例5---------------------
> name confidence money cMoney
>5 西九 100 10000.11 100.0011
>4 哈八 90 9999.99 111.1110
>3 赵六 80 8888.88 111.1110
>2 王五 70 7777.77 111.1110
>1 李四 60 6666.66 111.1110
>0 张三 55 5555.55 101.0100
>7 十一 44 4444.44 101.0100
>6 吴十 33 3333.33 101.0100
-
2.4空值判断
- 修改吴十的confidence为NaN(Not a Number-->不是一个数)
import pandas as pd
#编码以gb2312从文件读取csv文件,
itInfo = pd.read_csv('it01.csv',encoding='gb2312')
print("案例1---------------------")
#读取全部数据
print(itInfo)
print("案例2---------------------")
#判断是否为空
isnull_confidence = pd.isnull(itInfo['confidence'])
print(isnull_confidence)
print("案例3---------------------")
#总和
print(sum(itInfo['confidence']))
print("案例4---------------------")
#过滤
not_null_confidence = itInfo['confidence'][isnull_confidence==False]
print(not_null_confidence)
print("案例5---------------------")
#求和
print(sum(not_null_confidence))
测试结果:
>案例1---------------------
> name confidence money
>0 张三 55.0 5555.55
>1 李四 60.0 6666.66
>2 王五 70.0 7777.77
>3 赵六 80.0 8888.88
>4 哈八 90.0 9999.99
>5 西九 100.0 10000.11
>6 吴十 NaN 3333.33
>7 十一 44.0 4444.44
>案例2---------------------
>0 False
>1 False
>2 False
>3 False
>4 False
>5 False
>6 True
>7 False
>Name: confidence, dtype: bool
>案例3---------------------
>nan
>案例4---------------------
>0 55.0
>1 60.0
>2 70.0
>3 80.0
>4 90.0
>5 100.0
>7 44.0
>Name: confidence, dtype: float64
>案例5---------------------
>499.0
-
2.5分组
import pandas as pd
import numpy as np
#编码以gb2312从文件读取csv文件,
itInfo = pd.read_csv('it02.csv',encoding='gb2312')
print("案例1---------------------")
#读取全部数据
print(itInfo)
print("案例2---------------------")
#分组:index以什么分组,values求什么结果,aggfunc以什么方法
group = itInfo.pivot_table(index='sex',values='money',aggfunc=np.sum)
print(group)
测试结果:
>案例1---------------------
> name confidence money sex
>0 张三 55 5555.55 male
>1 李四 60 6666.66 female
>2 王五 70 7777.77 male
>3 赵六 80 8888.88 female
>4 哈八 90 9999.99 female
>5 西九 100 10000.11 male
>6 吴十 33 3333.33 female
>7 十一 44 4444.44 male
>案例2---------------------
> money
>sex
>female 28888.86
>male 27777.87
您的资助是我最大的动力!
金额随意,欢迎来赏!