Pandas

Pandas是python里分析结构数据化的工具集
基础是numpy:高性能矩阵运算
图形库matplotlib:提供数据可视化

创建关键数据结构

s = pd.Series([1,2,3,np.NaN,8,4])
data = pd.DataFrame(np.random.randn(6,4),index = dates,cloums = list(“ABCD”))
d = {“A”:1,“B”:2,“C”:rang(4),“D”:arange(4)}

data.head() #默认查看前5行,括号中参数就是行数
data.tail() #默认查看后五行,括号中参数就是行数
data.tail(3)
data.index #查看行标签
data.sort_index(axis=1,ascending=Fales) #按顺序排序,axis = 1是列标签,默认=0行标签,ascending=Fales是降序,True是升序
data.columes #查看列标签
data.T #转置
data.sort_values(by = “a”) #列标签a进行排序

读取文件:
1.csv,tsv,txt用逗号。tan分割的纯文本文件:pd.read_csv
2.excle微软xls或者xlsx文件:pd.read_excel
3.musql关系型数据库表:pd.read_sql

读取csv
在这里插入图片描述
读取txt文件
在这里插入图片描述
读取excel文件
在这里插入图片描述
读取mysql表:
在这里插入图片描述
Pandas数据结构:
1.DataFrame:二维数组,整个表格,多行多列
在这里插入图片描述

2。Series:是一种类似一位数组的对象,由一组数据(不同数据类型)以及一组与之相关的数据标签(索引)组成。:一维数据,一行或者一列,在这里插入图片描述
Series和DataFrame搭配使用:DataFrame查询出一个区块,仍然是一个二维表格,那么仍然是DataFrame,但是如果结果是一列或者一行,那么他的结构就是Series。
创建Series的方法:
1.s = pd.Series([1,“a”,5.2,7]) #类似于列表
s.index #获取索引
s.values #获取元素值的列表

2.s = pd.Series([1,“a”,5.2,7],index = [“d”,“b”,“a”,“c”])
s
d 1
b a
a 5.2
c 7
dtype:object

3.s1 = {“a”:30,“b”:24,“c”:52}
s = pd.Series(s1)
s
a 30
b 24
c 52
dtype:object

根据标签索引查询数据

类似于python的dict

s = pd.Series([1,“a”,5.2,7],index = [“d”,“b”,“a”,“c”])
s[“a”]
5.2
s[[“b”,“a”]]
a,5.2

DataFrame:
和series不同,dataframe有行索引index也有列索引columns。
可以被看做是有series组成的字典,创建dataframe最常用的方法就是上面提到的读取纯文本文件,excel和mysql数据库。
根据多个字典序列创建dataframe。
在这里插入图片描述
df.dypes
state object
year int64
pop float64
dtype:object
df.columns
state,year,pop
df.index
start = 0,stop=5,step =1

dataframe中查询出series

查询列:
df[’'year"] #series,查询一类,返回的是行的索引
df[“year”,“pop”] #dataframe
查询行:
df.loc[1] #series,需要用到loc方法,返回的索引是列名
df.loc[1:3] #查询多行,这里需要注意,这里都是闭区间,也就是包含第三行。这也是一个dataframe

pandas如何对数据进行查询(df.loc的5种方法)

5种方法分别是按数值,列表,区间,条件,函数
Pandas的查询方法:
1.df.loc方法,根据行,列的标签值查询(.loc既能查询,又能覆盖写入,强烈推荐!!)
df.loc的5个查询数据的方法:
1.使用单个label值查询数据
2.使用值列表批量查询
3.使用数值区间进行范围查询
4.使用条件表达式查询
5.调用函数查询
以上的查询方法,适用于各个维度。既适用于行,也适用于列,注意观察降维dataframe>Series>值
数据:在这里插入图片描述
df.set_index(“ymd”,inplace=“True”) #改变行名,由0-1-2-3-4.。。。改变成日期,inplace:True是直接改变这个df。
在这里插入图片描述
把bwendu列的数据进行处理:
df.loc[:,“bwendu”] = df[“bwendu”].str.replace(“℃”,"").sdtype(“int32”)
df.loc[:,“ywendu”] = df[“ywendu”].str.replace(“℃”,"").sdtype(“int32”)
在这里插入图片描述
正题开始:
1.使用单个label值查询数据:行或者列,都可以值传入单个值,事先精准匹配
df.loc[“2018-01-03”,“bWendu”]
2
df.loc[“2018-01-03”,][“bWendu”,“yWendu”]
bWendu 2
yWendu -5
Name:2018-01-03,dtype:object
2.使用值列表进行批量查询
df.loc[[“2018-01-03”,“2018-01-04”,“2018-01-05”],[“bWendu”,“yWendu”]]
在这里插入图片描述
3.使用数值区间进行范围查询
df.loc[“2018-01-03”:“2018-01-05”,“bWendu”]
在这里插入图片描述
4.使用条件表达式查询,返回的是bool类型的数组,bool列表的长度等于行数或者列数。
例子1.查询全年最低温度低于-10度的列表:
df.loc[df[“bWendu”]<-10,:] #这个series传入df以后,只会返回结果为True的数据.后面的:表示从索引取所有行
观察返回的series,左侧返回的是ymd,右侧返回的是bool类型。
在这里插入图片描述
在这里插入图片描述
例子2.查询我心中的完美天气:
df.loc[(df[dWendu]>15)&(df[yWendu]<30)&(df[“tianqi”] == “晴”)&(df[“aqiLevel”] == 1),:]
在这里插入图片描述
在这里插入图片描述
5.调用函数查询
df.loc[lambda df :(df[“bWendu”]<=30)&df[“yWendu”]>=15,:]
在这里插入图片描述
在这里插入图片描述

2.df.iloc方法,根据行,列的数字位置查询
3.df.where方法(比较高级)
4.df.query方法(比较高级)

python新增数据列(直接赋值,apply,assign,分条件赋值)

pandas怎样新增数据列:
在进行数据分析时,经常按照一定条件创建新的数据列,然后进行进一步的分析。
直接赋值
apply:df.apply
assign:df,assign
分条件赋值:按条件选择分组分别赋值
在这里插入图片描述
1.直接赋值法(在上一小节,已经处理温度的时候,想把3℃变成int类型,这种方法就是直接赋值):
df.loc[:,“bWendu”] = df[“bWendu”],str,replace(“℃”,"").astype(“int32”) #df.loc[:,“bWendu”]选择所有行数的bWendu这列,等于最低温度这一列的str形式的replace函数(这个函数是把逗号后面的“”中数据替换成前面的“”中的数据)。最后astype(转换类型,类型为astype后面引号中的数据类型)
df,loc[:,“yWendu”] = df[“yWendu”],str,replace(“℃”,"").astype(“int32”)
df.head()
在这里插入图片描述

df.loc[:,“wencha”] = df[“bWendu”] - df[“yWendu”]
#注意。df[“bWendu”]其实是一个Series,后面的减法返回的是Series。
df.head()
在这里插入图片描述
2.df.apply()
沿着df的某个轴,应用了一个函数,传入给函数的对象,是一个Series,这个Series 要么是df的index(axis = 0),要么是cloumns(axis = 1)
df.loc[:,“wendu_type”] = df.apply(get_wendu_type,axis = 1)
实例:添加一列温度类型:
def get_wendu_type(x):
if x[“bWendu”]>33:
return “高温”
elif x

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值