pandas之DataFrame

pandas之DataFrame

1、DataFrame创建(二维,Series容器)
d1 = pd.DataFrame(np.arange(12).reshape(3, 4))

在这里插入图片描述
通过index和columns指定行索引和列索引

d2 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("ABCD"))

在这里插入图片描述
当给DataFrame传入一个字典时

temp_dict = {"name":["xiaoming", "xiaohong"], "age":[18, 20], "tel":[10086, 10010]}
pd.DataFrame(temp_dict)

在这里插入图片描述
当传入一个以字典为元素的列表时

t1 = [{"name": "xiaohong", "age": 18, "tel": 10086}, {"name": "xiaogang", "tel": 10000}, {"name": "xiaoming", "age": 12}]
d4 = pd.DataFrame(t1)

当值缺失时使用NaN填补
在这里插入图片描述
DateFrame的基础属性

df.shape  # 行数,列数
df.dtypes  # 列数据类型
df.ndim  # 数据维度
df.index  # 行索引
df.columns  # 列索引
df.values  # 对象值,二维ndarray数组

DataFrame整体情况查询

df.head(3)  # 显示头几行,默认5行
df.tail(3)  # 显示末尾几行,默认5行
df.info()  # 相关信息概览:行数,列数,列索引,列非空值个数,列类型,内存占用
df.describe()  # 快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值
2、DateFrame的索引与切片

在DataFrame中使用索引与切片之前通常使用

df_sorted = df.sort_values(by="Count_AnimalName", ascending=False)  # by属性指定按照那一列,ascending指定按照升序还是降序,默认升序

取某些行和Series类似

df_sorted[:100]  # 取前100行
df_sorted["age"]  # 取age那一列

还有更多经过pandas优化过的选择方式:
(1)df.loc通过标签索引行数据
(2)df.iloc通过位置获取行数据
假设有d2如图:
在这里插入图片描述

d2.loc["a", "D"]  # 取出位于a行D列的数据3
d2.loc["a"]  # 取出第a行,是一个Series,索引为ABCD
d2.loc[:"A"]  # 取出A列,是一个Series,索引为abc
d2.loc[["a", "c"],:["A", "C"]]  # 取多行多列
d2.iloc[1:2,[2,3]]  # 按位置取数据,1~2行,2,3列
d2.iloc[1:2,1:3]  # 1~2行,1~3列
3、bool索引
df[df["Count_AnimalName"]>180]  # 取出所有df中Count_AnimalName大于180的数据
df[(df["Count_AnimalName"]>180)&(df["Count_AnimalName"]<500)]  # 当有多个条件时不能连续写

在这里插入图片描述

4、缺失数据处理

数据缺失通常有两种情况:
一种是空,None等,在pandas是NaN(和np.nan一样)
另一种是我们让其为0
判断数据是否为NaN:`

pd.isnull(df)
pd.notnull[df]

处理方式1:删除NaN所在的行列dropna(axis=0)

t3.dropna(axis=0)  # 删除t3中含nan的行,
t3.dropna(axis=0, how="all")  # 删除一行中全部是NaN的行,how属性默认为any
t3.dropna(axis=0, how="all", inplace=False)  # inplace属性表示是否进行原地修改

处理方式2:填充数据

t.fillna(t.mean())  # 填充均值
t["age"] = t["age"].fillna(t["age"].mean())  # 单纯操作某一列
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值