首页 > 其他分享 >Pandas -----------------------基础知识(五)

Pandas -----------------------基础知识(五)

时间:2024-09-27 21:21:42浏览次数:3  
标签:index 基础知识 df df2 ----------------------- print new csv Pandas

  • 索引和列操作
  • 函数
  • 缺失值

索引和列操作

# 1 加载数据
# 1.1 从链家租房数据集中获取天通苑租房区域的所有数据存储在df2中
# 1.2 从df2中获取价格列存储在df2_price对象
import pandas as pd
df = pd.read_csv('/root/pandas_code_ling/data/b_LJdata.csv')
df2 = df[df['区域']== '天通苑租房']
df2_price = df2['价格']
df2_price

# 2 获取索引
# 2.1 通过 df2.index和 s_price.index 可以查看数据的索引
# 2.2 使用索引下标df2.index[0]和s.index[0]可以获取具体的某一个索引值

df2_price.index

df2.index



df2.index[2]

print(df2_price.index[2])

#  78  第三个

# 3 查看列名
# 3.1 查看 DataFrame 中所有列名
df.columns
# Index(['区域', '地址', '户型', '面积', '价格', '朝向', '更新时间', '看房人数'], dtype='object')
# 3.2 查看 DataFrame 中 特定列名对应的下标

df.columns.get_loc('价格')  
#  4
# 目标: 读取数据时指定索引列
# 1 读取数据 使用 区域列 作为索引
df_3 = pd.read_csv('/root/pandas_code_ling/data/b_LJdata.csv',index_col=0)
df_3

# 目标: 指定某列为索引
# 1 使用 set_index 指定 区域 列为索引列, 影响原始数据
df_4 = df.set_index('区域',inplace=False)
df

# 目标: 重置索引
# 0 准备数据
copy_df = df2.copy()
# print(copy_df.head())

#  重置索引 影响原始数据, 去掉 index 列
copy_df.reset_index(drop=True, inplace=True)
copy_df

# 0 拷贝s_price的前5条数据 
new_price = df2_price.head().copy()
print(new_price)

# 1 重置索引
new_price = new_price.reset_index(inplace=False, drop=True)
print(new_price)

# 2 修改索引
new_price.index=['a','b','c','d','e']
print(new_price)

# 目标: 赋值修改列名
new_df = df[['区域','价格']]
new_df = new_df.head().copy()
new_df

new_df.columns = ['列名1','列名2']
new_df

# 目标: 赋值修改列名和索引

# 1 使用 rename 修改列名
# 2 使用 rename 修改索引
new_df.rename(
    columns={'区域':'新区域','价格':'新价格'},
    index={0:'a', 2:'b', 4:'c'},
    inplace=True
)
new_df

函数

原始数据

 # 根据指定列的值由大到小排列,返回n行数据
df2.nlargest(5,'价格')

df2.nsmallest(3,'价格')

# 按价格列的数值由大到小进行排序  不修改原始数据
print(df2.sort_values(['价格'], ascending=False))

# 先对看房人数列由小到大排序, 再对价格列由大到小排序
print(df2.sort_values(['价格', '看房人数'], ascending=[True, False]))

相关性

df.corr()

标准偏差

df2.std()

分位数

# 二分位数  中位数
df2.quantile()  

# 四分位数  (计算:以看房人数四分之一分位为例 (10-1)*0.25=2.25  2.25+1=3.25  第三位是29  29+(30-29)*0.25=29.25)
df2.quantile([0.25, 0.5, 0.75])

缺失值

  • Pandas中的NaN值来自NumPy库,NumPy中缺失值有几种表示形式:NaN,NAN,nan,他们都一样

  • 缺失值和其它类型的数据不同,它毫无意义,NaN不等于0,也不等于空字符串

加载数据
df = pd.read_csv('/root/pandas_code_ling/data/c_city_day.csv')
df.head()

df = pd.read_csv('/root/pandas_code_ling/data/c_city_day.csv',keep_default_na=False)
df.head()

df = pd.read_csv('/root/pandas_code_ling/data/c_city_day.csv',na_values='Ahmedabad')
df.head()

df.info()

# df.head().isna()
# df.head().isnull()
# df.head().notnull()
df.head().notna()

df = pd.read_csv('/root/pandas_code_ling/data/c_city_day.csv')
# 随机获取10条数据
df2 = df.sample(n=10, random_state=5)
df2

# 删除含有缺失值的行数据
df2.dropna()

# # 删除含有缺失值的列
df2.dropna(axis=1)

# # 删除指定列中含有缺失值的行数据
df2.dropna(how='any', subset=['PM2.5', 'Xylene', 'AQI'])

# # 删除指定列中都含有缺失值的行数据
df2.dropna(how='all', subset=['PM2.5', 'Xylene', 'AQI'])

# # 删除含有缺失值的行数据, 剩余非空值个数大于等于12的行数据保留
df2.dropna(thresh=12)

df.head().isnull().sum()

填充缺失值 

# 目标: 用平均值填充PM2.5的缺失值
# 1 加载数据
df = pd.read_csv("./data/c_city_day.csv")
# 2 验证缺失值
 df.info() # 总: 29531  PM2.5: 24933

# 3 求平均值
pm25_mean = df['PM2.5'].mean()
print(pm25_mean) # 67.45057794890272
# 4 填充平均值
df['PM2.5'].fillna(pm25_mean, inplace=True)

# 5 验证
df.info() # 总: 29531  PM2.5: 29531
print(df['PM2.5'].mean())

# 使用前后值填充
# 加载数据
df = pd.read_csv('./data/c_city_day.csv')
s1 = df['Xylene'][54:64]
print(s1)
print('---------------------------')
print(s1.fillna(method='ffill'))

# 加载数据
df = pd.read_csv('./data/c_city_day.csv')
s1 = df['Xylene'][54:64]
print(s1)
print('---------------------------')
print(s1.fillna(method='bfill'))

# 使用线性填充
df = pd.read_csv('./data/c_city_day.csv')
s1 = df['Xylene'][54:64]
print(s1)
print('---------------------------')
print(s1.interpolate(limit_direction='both'))

标签:index,基础知识,df,df2,-----------------------,print,new,csv,Pandas
From: https://blog.csdn.net/weixin_54353942/article/details/142595544

相关文章

  • 『模拟赛』CSP-S模拟5
    Rank一般A.光胱!妈的传奇题目控我两个小时想\(\mathcal{O(1)}\)做法。其实带下取整的四个四元一次方程根本解不了,考虑到这个题给的范围只有\(n\le1500\),可以枚举两维剩下二分到一个小区间里去做,复杂度\(\mathcal{O(n^2\logn)}\),当然数据水卡卡枚举的边界\(\mathcal......
  • 嵌入式学习--数据结构+算法
    嵌入式学习--数据结构+算法数据结构1.1数据1.2逻辑结构1.3存储结构1)顺序存储结构2)链式存储结构1.4操作(数据的运算)算法2.1算法与程序2.2算法与数据结构2.3算法的特性2.4如何评价一个算法的好坏?2.5时间复杂度2.6空间复杂度数据结构数据的逻辑结构、存储结构、......
  • 《Learning Instance-Level Representation for Large-Scale Multi-Modal Pretraining
    系列论文研读目录文章目录系列论文研读目录摘要1.引言2.相关工作3.方法3.1.模型概述3.2.提取以实例为中心的表示法3.3.多模式预培训目标3.4.转移到下游任务4.实验预训练细节4.2.下游任务评价4.2.1零冲击产品分类4.2.2zero-shot图像-文本检索4.2.3零次产品检索4.2.4零......
  • 【基础岛·第6关】OpenCompass 评测 InternLM-1.8B 实践
    目录1.概览2.环境配置2.1创建开发机和conda环境2.2安装——面向GPU的环境安装3.数据准备3.1评测数据集3.2InternLM和ceval相关的配置文件4.启动测评4.1使用命令行配置参数法进行评测4.2使用配置文件修改参数法进行评测1.概览在OpenCompass中评估一个模型通常包括......
  • 征程 6E/M 快速上手实战 Sample-Camera
    01Camera模块简述本文档简单介绍Camera子系统软件架构、列出已支持的Camera模组,并提供相应的配置说明,同时引用Sensor点亮调试方法介绍一颗新模组接入的步骤,再按根据重要功能按专题介绍接入方案限制、EMB接收等,并最终汇总平台已有单板的Camera接入使用说明,用于指导征......
  • CSP2024-27
    2A题意:1A题意:给定\(n\timesn\)种物品,\((i,j)\)有\(a_{i,j}\)个,权值为\(b_{i,j}\),两个物品等价当且仅当\(i\)相等或\(j\)相等。初始有一个空(可重)集\(S\),每次等概率从剩余物品中选一个\(x\)出来。如果\(S\)中没有和\(x\)等价的物品,那么\(x\)加入\(S\)......
  • 2024-2025赛季游记
    Day9.20初赛前一天不知道看什么,感觉上一年就跟做梦一样一眨眼就过去了。看了看初赛复习资料就睡了。Day9.21初赛比赛日今年没报J,所以上午一直在摆烂。去年的我每天都很慌,所以今年的心态也算是有进步吧。下午考试,lyc还在101考,我跟dyh和lyh、gzq等一些学长和学弟lj......
  • BOOKS1 - Copying Books
    很显然看到要求最大值最小就可以想到二分答案,然后依次判断长度是否合法。这题的输出比较特殊越靠前的区间长度越小,所以我们要将最后得到的答案从后向前依次划分区间即可。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=510;intt;intn,......
  • 深度讲解-APP安全评估报告(APP上架必备)
    随着《具有舆论属性或社会动员能力的互联网信息服务安全评估规定》(以下简称《评估规定》)的发布,互联网信息服务提供者在开展具有舆论属性或社会动员能力的App服务时,必须遵循相应的安全评估流程。以下是详细的App安全评估申请流程,帮助您顺利完成评估,确保应用合规与安全。什么类......
  • 多普勒扩展及相干时间 - 快时变信道和满时变信道
    先上定义:(1)在无线通信的环境中,想象从transmitter 发出的信号会从不同的方向发射出,这些信号会通过不同的路径,遇到不同的障碍,最后汇集在接收端。往往来说,我们最后得到的都会比原有信号的质量更差,我们就把这样的信号损失(signalloss)叫做衰落(fading)。(2)定义最大多普勒频移的......