百日筑基篇——Pandas学习(pyhton入门六)
前言
随着python的学习,在数据分析方面,pandas库的学习是必不可少的,本文记录了学习pandas时的笔记,用来巩固所学,方便随时查阅。
一、pandas是什么?
pandas 是一个基于 Python 语言的数据分析库,提供了丰富的数据结构和功能,用于简化数据分析任务。经常与numpy、matplotlib以及sklearn等库一起使用。
二、数据读取
import pandas as pd
#读取excel文件
pd.read_excel(file_path)
#读取csv,txt.tsv文件
pd.read_csv(file_path,sep="\t",header= , names= )
#读取MySQL数据库
import pymysql
conn = pymysql.connect(host=" ", user=" ", password=" ", database="", charset="")
mysql_wht = pd.read_sql("sql语句", con=conn)
#查看读取数据的信息
df = pd.read_excel(文件路径)
print(df.shape) #看行、列数
print(df.columns) #看列名
print(df.index) #看索引列
print(df.dtypes) #看每列的数据类型
print(df.head()) #看前几行数据
三、数据结构
Pandas中的主要数据结构有两种:Series(一维序列,表示一行或一列)和DataFrame(二维数据,表示数据框)
1. Series
import pandas as pd
import numpy as np
# 创建一个Series对象
w = pd.Series([1, 3, 5, np.nan, 6, 8])
print(w)
h = pd.Series({"w": 22, "h": 33, "t": 99})
print(h)
#结果
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64
w 22
h 33
t 99
dtype: int64
2. DataFrame
#创建一个数据框
datas = {
"ymd": ["2024-01-01", '2024-01-02', "2024-01-03", "2024-01-04"],
"bwendu": ["3℃", "2℃", "2℃", "0℃"],
"ywendu": [-6, -5, -5, -8],
"tianqi": ["晴~多云", "阴~多云", "多云", "阴"],
"fengxiang": ["东北风", "东北风", "北风", "西北风"],
"fengli": ["1-2级", "1-2级", "2-3级", "3-4级"],
}
df = pd.DataFrame(datas)
print(df)
#结果
ymd bwendu ywendu tianqi fengxiang fengli
0 2018-01-01 3℃ -6 晴~多云 东北风 1-2级
1 2018-01-02 2℃ -5 阴~多云 东北风 1-2级
2 2018-01-03 2℃ -5 多云 北风 2-3级
3 2018-01-04 0℃ -8 阴 西北风 3-4级
四、数据查询
1. 查询的结果
#只查询一列/行,返回的是Series
print(df["ymd"])
0 2024-01-01
1 2024-01-02
2 2024-01-03
3 2024-01-04
Name: ymd, dtype: object
print(df.loc[1])
ymd 2024-01-02
bwendu 2℃
ywendu -5
tianqi 阴~多云
fengxiang 东北风
fengli 1-2级
Name: 1, dtype: object
#查询多行、多列,返回DataFrame
print(df[["ymd","fengli"]])
print(df.loc[1:3])
ymd bwendu ywendu tianqi fengxiang fengli
1 2024-01-02 2℃ -5 阴~多云 东北风 1-2级
2 2024-01-03 2℃ -5 多云 北风 2-3级
3 2024-01-04 0℃ -8 阴 西北风 3-4级
2. .loc 方法查询
import pandas as pd
#设定日期为索引
df.set_index("ymd",inplace=True)
#去掉"bwendu"列的后缀℃
df.loc[:,"bwendu"] = df["bwendu"].str.replace("℃","").astype("int32")
print(df)
bwendu ywendu tianqi fengxiang fengli
ymd
2024-01-01 3 -6 晴~多云 东北风 1-2级
2024-01-02 2 -5 阴~多云 东北风 1-2级
2024-01-03 2 -5 多云 北风 2-3级
2024-01-04 0 -8 阴 西北风 3-4级
#得到单个值,确定(行,列)
print(df.loc["2024-01-03","tianqi"])
多云
#使用条件来查询
print(df.loc[df["ywendu"] < -5, :])
bwendu ywendu tianqi fengxiang fengli
ymd
2024-01-01 3 -6 晴~多云 东北风 1-2级
2024-01-04 0 -8 阴 西北风 3-4级
#使用lambda表达式
print(df.loc[lambda df : (df["ywendu"]<-5)&(df["bwendu"]>0),: ])
ymd
2024-01-01 3 -6 晴~多云 东北风 1-2级
#使用自定义函数
def query_func(df):
return df.index.str.endswith("-04")
print(df.loc[query_func(df),:])
bwendu ywendu tianqi fengxiang fengli
ymd
2024-01-04 0 -8 阴 西北风 3-4级
总结
本章主要简述了如何用pandas进行数据读取、在pandas中的两大数据结构(Series和DataFrame)、以及如何进行数据的查询(主要讲述了.loc方法)。
莫听穿林打叶声,何妨吟啸且徐行;
–2023-8-6 筑基篇