2 --- dataframe(pandas)

前情提要:
【pandas的常用数据类型】
(1)Series一维,带标签数组
(2)DataFrame二维,Series容器



【DataFrame对象既有行索引,又有列索引】
(1)列索引,表明不同列,纵向索引,叫columns,1轴,axis=1(表现为行)
(2)行索引,表明不同行,横向索引,叫inde,0轴,axis=0   (表现为列)
【问题1】pandas之DataFrame的创建
'''
有2个问题:
(1)DataFrame和Series有什么关系?
* DataFrame的每一行或者每一列,都是Series

(2)Series能够传入字典,那么DataFrame能够传入字典作为数据么?那么Mongodb的数据是不是也可以这样传入呢?
* 列索引(axis=1,行) -----> 字典的键
  行索引(axis=0,列)-----> 序号0,1,2...
* 字典会根据键(key)的顺序进行排序
* pymongo是mongodb的python库,首先电脑里得有MongoDB数据库。这个学不学随意,也可以直接用mysql
'''

# case1
'''
DataFrame对象既有行索引,又有列索引:
(1)列索引,axis=1,叫columns
(2)行索引,axis=0,叫index
'''
import pandas as pd
import numpy as np
import string

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

t2 = pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('WXYZ'))     # 3行4列
print(t2)

t3 = pd.DataFrame(np.arange(12).reshape(3,4),index=list(string.ascii_uppercase[:3]),columns=list(string.ascii_uppercase[-4:]))
print(t3)
print('**(1)**'*10)








# case2 ------ 字典
'''
字典:
(1)一个键对应多个值
(2)一个键对应一个值
'''
d1 = {
   'name':['xiaoming','xiaogang'],'age':[20,32],'tel':[10086,10010]}
t1 = pd.DataFrame(d1)
print(t1)
print(type(t1))

d2 = [{
   'name':'xiaohong','age':32,'tel':10010},{
   'name':'xiaogang','tel':10086},{
   'name':'xiaowang','age':18}]
t2 = pd.DataFrame(d2)
print(d2)
print(t2)
print('**(2)**'*10)








# case3 ----- MongoDB数据库的数据----不用运行,了解即可,。重点掌握mysql
'''
data = [{ },{ },{ }]
'''
from pymongo import MongoClient
import pandas as pd

client = MongoClient()       # 连接MongoDB数据库
collection = client['douban']['tv1']
data = list(collection.find())

# t1 = data[0]                # 用Series打开mongodb数据
# t1 = pd.Series(t1)
# print(t1)

df = pd.DataFrame(data)                # 用DataFrame打开mongodb数据
print(df)












# case4 ----- MongoDB数据库的数据----不用运行,了解即可,。重点掌握mysql
'''
(1)读取到的data = [{ },{ },{ }]
(2)find()是mongodb查询整个集合(表)
(3)本操作的意思是:先遍历,取出想要的值放进一个大字典,再把这个大字典存入list列表中
'''
from pymongo import MongoClient
import pandas as pd

client = MongoClient()
collection = client['douban']['tv1']
data = collection.find()

data_list = []
for i in data:
    temp = {
   }
    temp['info'] = i['info']
    temp['rating_count'] = i['rating']['count']
    temp['rating_value'] = i['rating']['value']
    temp['title'] = i['title']
    temp['country'] = i['tv_category']
    temp['directors'] = i['directors']
    temp['actors'] = i['actors']
    data_list.append(temp)

# t1 = data[0]
# t1 = pd.Series(t1)
# print(t1)                # Series

df = pd.DataFrame(data_list)
print(df)                  # DataFrame
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
   W  X   Y   Z
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
   W  X   Y   Z
A  0  1   2   3
B  4  5   6   7
C  8  9  10  11
**(1)****(1)****(1)****(1)****(1)****(1)****(1)****(1)****(1)****(1)**
       name  age    tel
0  xiaoming   20  10086
1  xiaogang   32  10010
<class 'pandas.core.frame.DataFrame'>
[{'name': 'xiaohong', 'age': 32, 'tel': 10010}, {'name': 'xiaogang', 'tel': 10086}, {'name': 'xiaowang', 'age': 18}]
       name   age      tel
0  xiaohong  32.0  10010.0
1  xiaogang   NaN  10086.0
2  xiaowang  18.0      NaN
**(2)****(2)****(2)****(2)****(2)****(2)****(2)****(2)****(2)****(2)**
【问题2】DataFrame的描述信息
(1)DataFrame的基础属性
df.shape     行数,列数
df.dtypes    列数据类型
df.ndim      数据维度
df.index     行索引
df.columns   列索引
df.values    对象值,二维ndarray数组


(2)DataFrame整体情况查询
df.head(3) 显示前几行,默认5行
df.tail(3) 显示后几行,默认5行
df.info( ) 相关信息概览:行数,列数,列索引,列非空值个数,列类型,内存占用

df.describe() 快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值
# case1
import pandas as pd
import numpy as np
t = [{
   'name':'xiaohong','age':32,'tel'</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值