pandas的使用

# Series 以为,带标签数组
# DataFrame二维,Series容器

import string
import pandas as pd
import numpy as np

# t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))
# string.ascii_uppercase[:10]表示创建10个大写字母,从小到大A-Z
# 创建索引index=
# print(t)
# print(t['A'])
# 类似与字典的方法

# print(t[['A', 'B']])
# 还可以多取

# print(t[t > 4])
# 布尔索引,取键值大于4的


# temp = {'name': '宵夜', 'age': '14'}
# t = pd.Series(temp)
# 通过字典创建带标签的的数组


# 如果索引和键值长度不匹配,键值会变为NaN

# df = pd.read_csv('we.csv')
# 读取csv文件
# print(df)
# 24

import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mongodb']
mycol = mydb['sites']
# mylist = [
#     {"name": "Taobao", "alexa": 100, "url": "https://www.taobao.com"},
#     {"name": "QQ", "alexa": 101, "url": "https://www.qq.com"},
#     {"name": "Facebook", "alexa": 10, "url": "https://www.facebook.com"},
#     {"name": "知乎", "alexa": 103, "url": "https://www.zhihu.com"},
#     {"name": "Github", "alexa": 109, "url": "https://www.github.com"}
# ]
# x = mycol.insert_many(mylist)
data = mycol.find()
# for i in data:
    # print(i)
# t1 = pd.Series(data[0])
# print(t1)

# ---------------------------索引-------------------------------#
t2 = pd.DataFrame(data)
# print(t2)

# print(t2[:10])
# print(t2['name'])
# 取10行
# 字符串表示取列索引

# print(t2.loc[2, 'name'])
# 通过标签索引某行数据

# print(t2.loc[:, 'name'])
# 选取多行,某列

# print(t2.loc[[1, 2], :])
# 选取多列,某行


# print(t2.loc[[1, 2]])
# 索引多行


# print(t2.iloc[3, :])
# 索引某行


# print(t2.iloc[:, 2])
# 索引某列

# print(t2[(t2["alexa"] == '100')])
# 布尔索引

# --------------------------------------字符串操作函数-------------------------------------#
# print(t2.iloc[:, 2].str.split())
# 将读取到的内容切割为一个个的列表


# print(t2.iloc[:, 2].str.split().tolist())
# 将读取到的内容切割为一个大的列表


# ----------------------------------判断是否空--------------------------------#

# print(pd.isnull(t2))
# print(pd.notnull(t2))

# ----------------------------删除行有nan的-----------------------------#
# t2.dropna(axis=0, how='all')
# 全部为nan时删除

# t2.dropna(axis=0, how='any')
# 只要有nan是就删除

# ---------------------------修改nan处的只-------------------------------#
# t2.dropna(axis=0, how='any', inplace=True)
# 原地修改

# t2.fillna(19)
# 将nan处的值换成19

# --------------------------求均值--------------------------------#
# print(t2.mean())
# 求每一列的均值

# -----------------------------------内构建函数------------------------------- #

# print(t2.head(2))
# 显示头2行

# print(t2.info())
# 展示相关信息

# print(t2.describe())
# 展示数据里数字的相关信息

# print(t2.sort_values(by='_id', ascending=False).head(10))
# 通过指定索引排序,取前10个

# df = pd.read_sql()
# print(pd.DataFrame(np.arange(12).reshape(3, 4), index=list('abc'), columns=list('defg')))
# 行索引指定index,列索引指定columns


# --------------------------------------合并数组--------------------------------#
# t2.join()
# 索引相同的的合并到一起

# print(t2.merge(t2, left_on='name', right_on='alexa'))
# 按照指定的列把数据按照一个顶的方式合并到一起

# print(t2.merge(t2, on='name', how='inner'))
# 默认是交集

# print(t2.merge(t2, on='name', how='outer'))
# 并集,NaN补全

# print(t2.merge(t2, on='name', how='left'))
# 左边为准,NaN补全

# print(t2.merge(t2, on='name', how='left'))
# 右边为准,NaN补全

# ------------------------------------分组和聚合-------------------------------------#
t4 = t2.groupby(by='name')
# 分组

# for i, j in t4:
#     print(i)
#     print(1'-' * 100)
#     print(j)
#     print('*' * 100)
# 遍历


# print(t4.count())
# print(t4['name'].count())
# print(t4['name'].count()['Facebook'])
# 统计

t6 = t2.groupby(by=[t2['alexa'], t2['url']])
# 支持多个条件进行分组
# for i in t6:
#     print(i)

# -------------------------------------索引和复合索引------------------------------#
# print(t2.index)
# 获取index

# t2.index = [i for i in range(0, 39)]
# 指定index

# t2.reindex(list('abcdef'))
# 重设index

# t2.set_index('name', drop=False)
# 将某一列作为index,不删除那一列

# print(t2['name'].unique())
# 将name列变成唯一索引

print(t2.set_index('name').index.unique())
# 将name列变成唯一索引

# ----复合索引-----
t2.swaplevel()
# swaplevel接受两个级别编号或名称,并返回一个互换了级别的新对象(但数据不会发生变化)将分层的索引调换位置,1级索引遍2级索引



print(t2.index)

# 36 25.03

 

官方文档:https://www.pypandas.cn/docs/  

 

你可能感兴趣的:(pandas的使用)