Pandas 学习笔记(一)

Pandas 学习笔记(一)

数据类型

Series 一维,带标签数组(index)
DataFrame 二维,Series容器

Series

创建Series
import pandas as pd
import numpy as np
import string
t1 = pd.Series(np.arange(10),index = list(string.ascii_uppercase[:10]))
print(t1)

#结果
A    0
B    1
C    2
D    3
E    4
F    5
G    6
H    7
I    8
J    9
dtype: int32
#指定Index
t3 = pd.Series([1,2,3,4,5,6],index = ["a","b","c","d","e","f"])
#利用字典创建Series
temp_dict = {"name":"jack","age":30,"data":"2020-1-3"}
t4 = pd.Series(temp_dict)
Series切片和索引

切片:直接传入start end 或者步长即可
索引:选取一个的时候传入序号或者Index,多个的时候传入序号或index的列表

#切片
print(t1[1:7:2])
#选取单个
print(t1[2])
print(t1["F"])
#选取多个
print(t1[1:3])
print(t1[[1,4,5]])
print(t1[["A","B","D"]])
#按条件选取
print(t1[t1>4])

ndarray 的很多方法可以应用在Series中如argmax,clip等

DataFrame

DataFrame对象既有行索引,又有列索引
行索引,表明不同行,横向索引,叫index,0轴,axis=0
列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

读取数据

读取csv

pd.read_csv()

从mysql中读取

pd.read_sql(sql_sentence,connection)

从mongodb中

数据的基本信息

dog_name = pd.read_csv(r"dogNames2.csv")
#行数列数
print(dog_name.shape)
#列数据类型
print(dog_name.dtypes)
#数据维度
print(dog_name.ndim)
#行索引
print(dog_name.index)
#列索引
print(dog_name.columns)
#对象值,返回二维ndarray数组
print(dog_name.values)

#返回头部3行
print(dog_name.head(3))
#返回尾部几行
print(dog_name.tail(3))
#相关信息概览
print(dog_name.info())
#快速综合统计结果:计数、均值、最小值、最大值、四分位数、标准差
#只计算Int float的信息
print(dog_name.describe())
print(dog_name["Count_AnimalName"].describe())

DataFrame操作

排序

#ascending 默认为True升序排列,False降序排列
dog_name = dog_name.sort_values(by = "Count_AnimalName",ascending=False)

选取数据

#方括号例写数字表示选取行
#方括号里写数字代表选取列
print(dog_name[:20])
print("***********")
print(dog_name["Row_Labels"])
print("***********")
print(dog_name[:20]["Row_Labels"])
#选择多列
print(t1[1:3][["w","x","y","z"]])


#.loc()通过标签索引数据
print(t1.loc["a","w"])
print(t1.loc["a",["w","z"]])
print(t1.loc["b":,["w","z"]])
#在loc中冒号是闭合的
print(t1.loc["a":"c",["w","z"]])
   w   z
a  0   3
b  4   7
c  8  11

#.iloc通过位置索引数据
#.iloc中的冒号左开右闭
print(t1.iloc[0:2,1:4])
#可以通过列的位置改变返回的DateFrame中列的位置
print(t1.iloc[0:2,[1,0]])
   x  w
a  1  0
b  5  4

布尔索引

print(dog_name[dog_name["Count_AnimalName"]>50])
#多个条件不同条件之间需要用括号括起来
print(dog_name[(dog_name["Count_AnimalName"]>50)&(dog_name["Count_AnimalName"]<100)])
#找到所有的使用次数超过700并且名字的字符串的长度大于4的狗的名字
dog_name[(dog_name["Row_Labels"].str.len()>4)&(dog_name["Count_AnimalName"]>80)]

在这里插入图片描述

#将字符串转化为小写
print(dog_name["Row_Labels"].str.lower())
print(dog_name["Row_Labels"].str.upper())
#得到各元素第i的字符
print(dog_name["Row_Labels"].str.get(0))

得到唯一值的个数

len(set(t2["director"].tolist()))
len(t2["director"].unique())

NAN的处理

判断NAN

t2.iloc[2,3] = np.nan
print(t2)
print(pd.isnull(t2))
print(pd.notnull(t2))
print(t2[pd.notnull(t2["z"])])
#结果
 w  x   y    z
a  0  1   2  3.0
b  4  5   6  7.0
c  8  9  10  NaN
       w      x      y      z
a  False  False  False  False
b  False  False  False  False
c  False  False  False   True
      w     x     y      z
a  True  True  True   True
b  True  True  True   True
c  True  True  True  False
   w  x  y    z
a  0  1  2  3.0
b  4  5  6  7.0

处理NAN

处理方式1:删除NaN所在的行列dropna (axis=0, how=‘any’, inplace=False)

#axis = 0对行
#inplace = True 原地修改
print(t2.dropna(axis = 0,how = "all",inplace = True))
#axis = 1对列
print(t2.dropna(axis = 1,how = "all"))
#how = "any" 存在NNA就去除
print(t2.dropna(axis = 0,how = "any"))
#how = "all" 删除全为NAN的
print(t2.dropna(axis = 1,how = "any"))

#结果
 w  x   y    z
a  0  1   2  3.0
b  4  5   6  7.0
c  8  9  10  NaN
   w  x   y    z
a  0  1   2  3.0
b  4  5   6  7.0
c  8  9  10  NaN
   w  x  y    z
a  0  1  2  3.0
b  4  5  6  7.0
   w  x   y
a  0  1   2
b  4  5   6
c  8  9  10

处理方式2:填充数据,t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)

#.fillna()
#t.mean()\t.median()
print(t2.fillna(t2.mean(),inplace= True))
#只填充一列
t2["z"] = t2["z"].fillna(t2["z"].mean())

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值