当前位置: 首页 > news >正文

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.indexdf2.indexdf2.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_dfnew_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'))

http://www.lryc.cn/news/448356.html

相关文章:

  • RabbitMQ 高级特性——重试机制
  • 每天一道面试题(20):锁的发生原因和避免措施
  • 2024淘宝双11活动,收下这份必买好物推荐清单
  • vue-cli,element-plus,axios,proxy
  • 《Zeotero的学习》
  • 大数据复习知识点1
  • 9.26 Buu俩题解
  • Mitsuba 渲染基础
  • 深入理解 WebSocket:实时通信的利器
  • OpenEuler配置本地yum源
  • 论文不同写作风格下的ChatGPT提示词分享
  • 单点登录(SSO)基础
  • 设置VsCode搜索时排除文件,文件列表中隐藏文件
  • 急!现在转大模型还来得及吗?零基础入门到精通,收藏这一篇就够了
  • 使用 lstm + crf 实现NER
  • 【牛掰】这款RPA多平台引流获客软件已正式上线,助您日引流1000+
  • Python的包管理工具pip安装
  • 《AIGC 时代程序员的应对之策》
  • 51单片机系列-串口(UART)通信技术
  • 使用k8s部署java前后端服务
  • 使用docker创建zabbix服务器
  • nodejs 016: javascript语法——解构赋值({ a, b, c } = {})=>{console.log(“Hello“);}
  • 【人人都能看懂的大模型原理】(一)
  • JMeter源码解析之JMeter命令行新增命令
  • YOLOv8 Windows c++推理
  • 一文读懂Python中的Popen函数
  • 07-阿里云镜像仓库
  • net core mvc 数据绑定 《2》
  • 文件服务器FastDFS 消息队列中间件RabbitMQ
  • 工作纪实58-Idea打jar包