前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分析篇(五)

数据分析篇(五)

作者头像
不断折腾
发布2019-09-23 11:08:34
7310
发布2019-09-23 11:08:34
举报
DataFrame 二维数组

实例:

# 导入模块

import pandas as pd

import numpy as np

# pandas创建一个二维数组

attr = pd.DataFrame(np.arange(12).reshape(3,4))

print(attr)

输出:

0 1 2 3

0 0 1 2 3

1 4 5 6 7

2 8 9 10 11

# 和numpy不同的是在第一行和第一列的地方多了索引。

# 行索引叫做index,是0轴

# 列索引叫做columns,是1轴

我们试着添加两个参数:

attr = pd.DataFrame(np.arange(12).reshape(3,4),index=list('qwe'),columns=list('zxcv'))

就会是另一种结果。

z x c v

q 0 1 2 3

w 4 5 6 7

e 8 9 10 11

DataFrame也是可以传入字典的。

dict = {'name':['张三','李四'],'age':[18,20],'tel':[10010,10086]}

attr1 = pd.DataFrame(dict)

pritnt(attr1)

会输出:

name age tel

0 张三 18 10010

1 李四 20 10086

同样,放入列表也是一样的。

属性:

# 获取行索引

attr2.index

# 获取列索引

attr2.columns

# 获取值

attr2.values

# 查看几行几列

attr2.shape

# 查看类型

attr2.dtype

# 查看数据的维度

attr2.ndim

# 显示前几行数据,默认为5行

attr2.head(2) # 取前两行数据

# 显示末尾几行数据,默认为5行

attr2.tail(2) # 取末尾两行数据

# 查看详细信息,行,列,索引,类型,内存等

attr2.info()

# 快速统计均值,标准差,最大值,最小值,四分位

attr2.describe()

# 当然只会统计数字类型的。

DataFrame排序

# 按照年龄排序(从小到大)

attr2 = attr2.sort_values(by="age")

# 从大到小

attr2 = attr2.sort_values(by="age",ascending=False)

# 取行或取列

# 以下我们认为attr3中有很多数据,字段还是和上面的一样

# 取前50行数据

attr3[:50]

# 取前20行的name字段

attr3[:20]['name']

# 单独取某一列的数据

attr3['name']

# 通过标签取某个值

# attr4数据假如是这样

name age tel

0 张三 18 10010

1 李四 20 10086

attr4.loc['0','name'] # 李四

attr4.loc['1'] # 李四 20 10086

attr4.loc['1',:] # 李四 20 10086

attr4.loc[:,'age'] # 18 20

取多行

attr4.loc[['0','1']]

取多列

attr4.loc[:,['name','age']]

# 通过索引来取值

attr4.iloc[1,:] # 取第二行

attr4.iloc[:,1] # 取第二列

attr4.iloc[:,[0,2]] # 取第一列和第三列

attr4.iloc[[0,1],[0,2]] # 取第一行和第二行的第一列和第三列

# 布尔索引

# 取出年龄大于10的

attr4[attr4['age']>10]

# 取出年龄大于10,小于20的

attr4[(10<attr4['age'])&(attr4['age']<20)]

# &表示and |表示或

pandas中字符串的方法

# 这里只介绍常用几种

# 模糊查询名字含有三的是str.contains()

a = attr1.loc[attr1['name'].str.contains('三')]

print(a)

# str.lower(),str.upper() 转换大小写

# str.replace() 替换字符串

# str.split() 分割

# str.len() 获取长度

等等,还有很多。

缺失数据的处理

我们如果读取爬去到的大量数据,可能会存在NaN值。

出现NaN和numpy中是一样的,表示不是一个数字。

我们需要把他修改成0获取其他中值,来减少我们计算的误差。

# 判断是否为NaN

pd.isbull(attr4) # 还有一个pd.notbull(attr4) 刚好相反

# 取值不为空的name列

attr4[pdnotnull(attr4['name'])]

# 删除存在NaN的行

attr4.deopna(axis=0) # 列就是axis = 1

# 想删除某一列全部为NaN的行

attr4.deopna(axis=0,how='all')

# 只要有一个NaN就删除,也就是默认的

attr4.deopna(axis=0,how='any')

# 把所有NaN填充为0

attr4.fillna(0)

# 填充均值

attr4.fillna(attr4.mean())

# 赋值为NaN值

att4['age'][0] = np.nan

# 赋值为0的数据为NaN

attr4[attr4==0] = np.nan

nan是不会参与平均值等计算的,0会参与计算。

pandas 连接MongoDB数据库

# 导入操作MongoDB的模块

from pymongo import MongoClient

import pandas as pd

# 链接

client = pymongo.MongoClient()

# 读取

db = client['xxx']['xxxx']

data = pd.DataFrame(list(db.find()))

即可。

# 平均数(age)

attr4['age'].mean()

# max,mix等都是一样的

# 假如name中有重复的,我们想获取有多人人,重复的去除

len(attr4['name'].unique())

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python入门到放弃 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档