作者:你去过的地方叫远方 | 来源:互联网 | 2023-09-03 17:16
本文由编程笔记#小编为大家整理,主要介绍了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/