【pandas】常用代码记录


前言

本文记录pandas常用代码段,方便使用时直接查找。


一、表格创建

import pandas as pd
import numpy as np

# 空表格
df = pd.DataFrame()

# 字典的方式创建 (key+列表)
df1 = pd.DataFrame({'yes': [0, 2], 'no': [1, 3]})
df2 = pd.DataFrame({'yes': np.arange(2), 'no': np.arange(3, 5)})
# 自定义行号,添加index参数即可
df3 = pd.DataFrame({'Jerry': ['tall', 'smart'], 'Sue': ['cue', 'rich']}, index=['A', 'B'])

Series可以看成是DataFrame的一列

s1 = pd.Series([1, 2, 3, 4, 5])
"""
0    1
1    2
2    3
3    4
4    5
dtype: int64
"""

Series和DataFrame是密切相关的。将DataFrame看作实际上只是一堆“粘合在一起”的Series即可。

二、读取文件

CSV:Comma-Separated Values,是一个用逗号分隔的表格。
链接: 以下代码数据获取链接

wine_reviews = pd.read_csv(r".\test06\wine-reviews\winemag-data-130k-v2.csv")
# shape属性查看几行几列
print(wine_reviews.shape)
# 查看前n行
n=10
print(wine_reviews.head(n))
# index_col=0:设定第一列为index值
wine_reviews = pd.read_csv(r".\test06\wine-reviews\winemag-data-130k-v2.csv", index=0)

三、索引

1、获取一列

# 可以用.列名的方式获取该列数值 ,是一个Series,也可以使用[]操作,
print(wine_reviews.country) 
print(wine_reviews['country']) # 该方法可以处理带空格的字段,将pandas看成更高级的字典,每一列都是一个字典

2、iloc和loc
iloc是基于行号和列号的索引。loc和iloc都是行第一,列第二。iloc将表格看成一个大矩阵(类似numpy中的array),从中选取数据。

wine_reviews.iloc[0] # 选取第0行
wine_reviews.iloc[:, 0] # 选取第0列的所有值 :操作表示选取所有值
wine_reviews.iloc[[0, 1, 2], 0] # 选取0,1,2行的所有值
wine_reviews.iloc[-5:] # 选取倒数5行
wine_reviews.iloc[[0, 1, 2, 3], [1, 2]]

loc是基于标签的索引。对于要获取指定列名的数据样本使用loc较好,第一个是行索引,第二个是列名,类似series,故可以用条件索引。

wine_reviews.loc[0, 'country']  # country列第0个数据
wine_reviews.loc[:, ['taster_name', 'taster_twitter_handle']]  # taster_name、taster_twitter_handle列的所有值

3、改变行索引

wine_reviews.set_index("title", inplace=True)

4、条件选择

print(wine_reviews[wine_reviews.country == 'Italy'])
print(wine_reviews.loc[wine_reviews.country == 'Italy'])
print(wine_reviews.loc[(wine_reviews.country == 'Italy') & (wine_reviews.points >= 90)])
wine_reviews.loc[reviews.country.isin(['Italy', 'France'])]
wine_reviews.loc[reviews.price.notnull()]

5、赋值

wine_reviews['critic'] = 'everyone'  # 新增一列,所有值均为everyone
wine_reviews['index_backwards'] = range(len(reviews), 0, -1)

四、缺失值处理相关

链接: 数据集下载链接

import pandas as pd

if __name__ == '__main__':
    nfl_data = pd.read_csv('./NFL Play by Play 2009-2017 (v4).csv')
    pd.set_option('display.max_rows', 5)
    print(nfl_data.head())

1、统计每一column的缺失值总数及缺失值占总数的百分比

missing_values_count = nfl_data.isnull().sum()
# how many total missing values do we have?
total_cells = np.product(nfl_data.shape)
total_missing = missing_values_count.sum()

# percent of data that is missing
percent_missing = (total_missing / total_cells) * 100
print(percent_missing)

思考:这个值丢失是因为没有记录还是因为它原本不存在?
如果原本就不存在,那么尝试猜测它是什么就没什么意义了。对于原本存在而未记录的,应该试着猜测它们应该是什么,而不是把它们作为NA。
2、dropna()删除有缺失值的行

nfl_data.dropna()  # 删除所有缺失值的行
columns_with_na_dropped = nfl_data.dropna(axis=1)  # 删除有缺失值的列
print(columns_with_na_dropped.head())

3、fillna() 将NaN值替换成指定值

# replace all NA's with 0
subset_nfl_data.fillna(0)  
subset_nfl_data.fillna(method='bfill', axis=0).fillna(0) # 用同一列中紧随其后的任何值替换缺失的值,其余的用0填充

其他

1、idxmax()获取Series最大值所在的列

missing_values_count = nfl_data.isnull().sum()
print(missing_values_count.idxmax())

总结

总结常用的pandas操作,方便查找使用。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值