掘金 人工智能 05月29日 14:18
Pandas的奇幻都市1:数据科学的冒险之旅
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文以生动的比喻,将Pandas中的Series比作数据的单行公寓,DataFrame比作数据的高层大厦,深入浅出地介绍了Pandas库的核心概念和常用操作。内容涵盖Series和DataFrame的创建方式,如通过一维数据、字典、ndarray等,以及如何进行数据操作,包括描述统计、排序、索引切片、处理缺失值以及数据拼接等。旨在帮助读者快速掌握Pandas的基本用法,轻松驾驭数据分析任务。

🏠Series是Pandas中的一维数据结构,可以理解为数据的单行公寓。可以通过多种方式创建,例如使用一维数组,并可以自定义索引,就像给公寓加上门牌号一样,方便数据访问。

🏢DataFrame是Pandas中的二维数据结构,类似于数据的高层大厦。可以由Series、ndarray、列表、字典、元组等多种数据类型创建。DataFrame拥有shape、index和columns等常用属性,方便查看数据的形状、列头和行头。

📊Pandas提供了丰富的数据操作功能,包括计算描述统计(如sum、mean、median等),排序(sort_index、sort_values),索引与切片(loc、iloc),以及处理缺失值(dropna、fillna)。这些操作如同都市的日常生活,让数据处理更加便捷。

🧩Pandas支持数据的拼接操作,包括concat和merge。concat可以在行或列方向上拼接DataFrame,merge则可以基于指定的键进行连接,类似于给数据大厦做扩建,使其变得更大更强。

嘿,数据科学的探险家们!今天我们要踏上一段奇幻的冒险之旅,探索Pandas这座繁华的都市。准备好你的数据背包,带上你的好奇心,咱们出发吧!

Series:数据的单行公寓

在Pandas的都市里,Series就像是数据的单行公寓。你可以用一维数据创建一个Series,就像租了一间单行公寓。

import numpy as npimport pandas as pdmy_series = pd.Series(np.array([4, -7, 6, -5, 3, 2])) #创建print(my_series.values) #[ 4 -7  6 -5  3  2]print(my_series.index) #RangeIndex(start=0, stop=6, step=1)

你还可以指定索引,就像给你的公寓加上门牌号。

my_series = pd.Series(np.array([4, -7, 6, -5, 3, 2]), index=["a", "b", "c", "d", "e", "f"])

通过字典来创建Series,就像是用不同的材料建造公寓。

my_dict = {"f": 2, "c": 6, "d": -5, "e": 3, "a": 4, "b": -7}my_series = pd.Series(my_dict)

如果你只需要一个标量值,也可以创建一个单间公寓。

my_series = pd.Series(3, index=[1]) #需要写索引也就是key

DataFrame:数据的高层大厦

如果Series是单行公寓,那么DataFrame就是数据的高层大厦。你可以用多种方式创建一个DataFrame,就像在都市里建造一栋大厦。

#通过一维数据创建d = {    "Open": pd.Series([136, 137, 140, 143, 141, 142], index=['2021-07-01', '2021-07-02', '2021-07-06', '2021-07-07', '2021-07-08', '2021-07-09']),    "High": pd.Series([137, 140, 143, 144, 144, 145], index=['2021-07-01', '2021-07-02', '2021-07-06', '2021-07-07', '2021-07-08', '2021-07-09']),    "Low": pd.Series([135, 137, 140, 142, 140, 142], index=['2021-07-01', '2021-07-02', '2021-07-06', '2021-07-07', '2021-07-08', '2021-07-09']),    "Close": pd.Series([137, 139, 142, 144, 143, 145], index = ['2021-07-01', '2021-07-02', '2021-07-06', '2021-07-07', '2021-07-08', '2021-07-09'])}df = pd.DataFrame(d)

你还可以用ndarray、列表、字典、元组等多种材料建造你的数据大厦。

d = {"Open": np.array([136, 137, 140, 143, 141, 142]),} # ndarray 的字典d = {"Open": [136, 137, 140, 143, 141, 142],} # 列表的字典d = [{"Open": 136, "High": 137, "Low": 135, "Close": 137},    {"Open": 137, "High": 140, "Low": 137, "Close": 139},] # 字典的列表d = [(136, 137, 135, 137),] # 元组的列表df = pd.DataFrame(d, index=['2021-07-01', '2021-07-02', '2021-07-06', '2021-07-10'])

常用属性

数据操作:都市的日常生活

在Pandas的都市里,数据操作就像是日常生活中的各种活动。你可以计算描述统计、进行排序、处理缺失值、拼接数据等等。

转换为numpy

计算描述统计

计算描述统计就像是给你的数据大厦做体检,看看它的健康状况。

常用方法:sum()和,mean()平均,cumsum()累计和,cumprod()累计积

DataFrame对象:使用这些方法需要指定axis参数。行计算:axis的值为index或0;列计算axis的值为columns或1.

my_series = pd.Series(np.array([4, -7, 6, -5, 3, 2, np.NaN, 8, 1, -9]))my_series.sum(skipna=False)#不忽略NaNdf.sum(axis=0, skipna=False)
函数描述
count非 NaN 值的数量
sum值的求和
mean值的平均数
median值的算术中位数
min、max计算最小值和最大值
std样本值的标准差
var样本值的方差
idxmin、idxmax计算能够获取到最小值和最大值的索引
quantile计算样本的分位数(0到1)

describe汇总统计

describe()函数就像是给你的数据大厦做全面的体检报告。

df.describe()df.describe(include=['object']) #对内容类型过滤

排序

排序就像是给你的数据大厦做整理,让它看起来更整洁。

#sort_index 根据index排序 ascending=False降序print(df.sort_index(axis=1, ascending=False))#sort_value 根据value排序 by=['A']根据A列排序 ascending=False降序print(df.sort_index(by=['A'], ascending=False))

索引与切片

索引和切片就像是给你的数据大厦做精细的装修,让你可以轻松找到每一个房间。

.loc['a'] == ['a'] == .get('a',np.NaN) # 使用的是轴标签.iloc[1]==[1] # 使用的是整数# 切片[ : ] # 使用整数切片不包含最末的那个元素,而使用对象的索引进行切片时是包含最末的那个元素的。

处理缺失值

处理缺失值就像是给你的数据大厦做修补,让它更加完美。

.isnull() / .notnull() # 返回布尔值.dropna() # 空>1的 行.dropna((axis=1)) # 空>1的列.dropna(how='all') # 全空的行.dropna(axis=1, how='all') # 全空的列.dropna(thresh=3) # 空>3的 行.dropna(axis=1,thresh=3) # 空>3的 列.dropna(inplace=True) # 操作原对象.fillna(0) # 填充缺失为0.fillna(method='ffill') # 列的方向上用前面的非空值填充后面的缺失值.fillna(method='ffill', axis=1) # 行....fillna(method='bfill') # 列的方向上用后面的非空值填充前面的缺失值.fillna(method='bfill', axis=1) # 行....fillna(method='ffill', limit=1) # limit填充次数.replace(np.NaN, 140) # 把所有的 np.NaN 替换为 140 inplace=True在原对象上替换

拼接:数据的扩建工程

拼接数据就像是给你的数据大厦做扩建,让它变得更大更强。

.concat([df1, df2])# axis:指出在哪个坐标轴的方向上进行拼接。可取的值为 `0/index,1/columns`,默认为 0。# join:指出拼接的方式,可取的值为 `inner交集(多的舍弃),outer合集(多的列/行不舍弃)`,默认为 `outer`。# ignore_index:指出是否使用拼接轴上的索引,可取的值为 `False、True`,默认为 False。当为 False 时,表示使用拼接轴上的索引;当为 True 时,表示不使用拼接轴上的索引,而是自动生成的索引。.merge()pd.merge(df1, df2, on='name'#键, how='left'#链接方式,suffixes=('_left', '_right')#重名的标题指定后缀)# 链接方式:默认inner ,多对多产生的是笛卡儿积
df1 = pd.DataFrame({'name': ['Bob', 'Bob', 'Alice', 'Charlie', 'Alice', 'Alice', 'Bob'],                    'score1

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Pandas Series DataFrame 数据分析
相关文章