您的位置:首页 > 文旅 > 旅游 > 渭南最新防疫信息_东莞企业营销型网站建设_如何把一个关键词优化到首页_新闻头条最新

渭南最新防疫信息_东莞企业营销型网站建设_如何把一个关键词优化到首页_新闻头条最新

2025/3/13 18:59:08 来源:https://blog.csdn.net/hbkybkzw/article/details/145882109  浏览:    关键词:渭南最新防疫信息_东莞企业营销型网站建设_如何把一个关键词优化到首页_新闻头条最新
渭南最新防疫信息_东莞企业营销型网站建设_如何把一个关键词优化到首页_新闻头条最新

pandas 数据结构

Series

  • Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引)组成。

列表创建

  • 仅有数据列表即可产生最简单的Series

    s1 = pd.Series([1,'a',5.2,7])
    '''左侧为索引,右侧是数据'''
    s1"""输出如下"""
    0      1
    1      a
    2    5.2
    3      7
    dtype: object
    

    获取索引

    '''获取索引'''
    s1.index"""输出如下"""
    RangeIndex(start=0, stop=4, step=1)
    

    获取数据

    ''' 获取数据'''
    s1.values"""输出如下"""
    array([1, 'a', 5.2, 7], dtype=object)
    

创建标签索引

  • 创建一个具有标签索引的Series

    s2 = pd.Series([1, 'a', 5.2, 7], index=['d','b','a','c'])
    s2"""输出如下"""
    d      1
    b      a
    a    5.2
    c      7
    dtype: object
    

    获取索引:

    s2.index"""输出如下"""
    Index(['d', 'b', 'a', 'c'], dtype='object')
    

字典创建

  • 使用Python字典创建Series

    sdata={'Ohio':35000,'Texas':72000,'Oregon':16000,'Utah':5000}
    s3=pd.Series(sdata)
    s3"""输出如下"""
    Ohio      35000
    Texas     72000
    Oregon    16000
    Utah       5000
    dtype: int64
    

根据标签索引查询数据

  • 类似Python的字典dict

    s2"""输出如下"""
    d      1
    b      a
    a    5.2
    c      7
    dtype: object
    
    s2['a']"""输出如下"""
    5.2
    
    type(s2['a'])"""输出如下"""
    float
    
    s2[['b','a']]"""输出如下"""
    b      a
    a    5.2
    dtype: object
    
    type(s2[['b','a']])"""输出如下"""
    pandas.core.series.Series
    

DataFrame

  • DataFrame是一个表格型的数据结构

    1. 每列可以是不同的值类型(数值、字符串、布尔值等)

    2. 既有行索引index,也有列索引columns

    3. 可以被看做由Series组成的字典

    创建dataframe最常用的方法,见02节读取纯文本文件、excel、mysql数据库

多个字典创建

  • 根据多个字典序列创建dataframe

    data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}
    df = pd.DataFrame(data)
    df
    

    202107131oNCq4

    每一列的数据类型

    # 每一列的数据类型
    df.dtypes"""输出如下"""
    state     object
    year       int64
    pop      float64
    dtype: object
    

    查看所有的列名

    # 查看所有的列名(特征名称、或者理解为列的索引)
    df.columns
    """输出如下"""
    Index(['state', 'year', 'pop'], dtype='object')
    

    查看行索引

    # 查看行索引
    df.index
    """输出如下"""
    RangeIndex(start=0, stop=5, step=1
    

从DataFrame中查询出Series

  • 从DataFrame中查询出Series

    1. 如果只查询一行、一列,返回的是pd.Series
    2. 如果查询多行、多列,返回的是pd.DataFrame
    df
    

    202107131oNCq4

查询多列

  • 查询多列,结果是一个pd.DataFrame

    df[['year', 'pop']]
    """输出如下"""
    

    type(df[['year', 'pop']])"""输出如下"""
    pandas.core.frame.DataFram
    

查询一行

  • 查询一行,结果是一个pd.Series

    df.loc[1]"""输出如下"""
    state    Ohio
    year     2001
    pop       1.7
    Name: 1, dtype: object  
    
    type(df.loc[1])"""输出如下"""
    pandas.core.series.Series
    

查询多行

  • 查询多行,结果是一个pd.DataFrame

    查询第2-4行

    df.loc[1:3]"""输出如下"""
    

    20210817M95b2E

    type(df.loc[1:3])"""输出如下"""
    pandas.core.frame.DataFrame
    

三、Pandas查询数据

  • Pandas查询数据的几种方法

    1. `df.loc`方法,根据行、列的标签值查询
    2. `df.iloc`方法,根据行、列的数字位置查询
    3. `df.where`方法
    4. `df.query`方法
    

    .loc既能查询,又能覆盖写入,强烈推荐!

  • Pandas使用df.loc查询数据的方法

    1. 使用单个label值查询数据
    2. 使用值列表批量查询
    3. 使用数值区间进行范围查询
    4. 使用条件表达式查询
    5. 调用函数查询
  • 注意

    1. 以上查询方法,既适用于行,也适用于列
    2. 注意观察降维dataFrame>Series>值
    print(pd.__version__)1.1.5
    

读取数据

  • 数据为北京2018年全年天气预报

    df = pd.read_csv("./datas/beijing_tianqi/beijing_tianqi_2018.csv")
    df.head()
    

    20210812O5Rokc

    设定索引为日期

    # 设定索引为日期,方便按日期筛选
    df.set_index('ymd', inplace=True)
    
    # 时间序列见后续,本次按字符串处理
    df.index"""输出如下"""
    Index(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05','2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10',...'2018-12-22', '2018-12-23', '2018-12-24', '2018-12-25', '2018-12-26','2018-12-27', '2018-12-28', '2018-12-29', '2018-12-30', '2018-12-31'],dtype='object', name='ymd', length=365)
    

    替换掉温度的后缀

    # 替换掉温度的后缀℃
    df.loc[:,'bWendu'] = df['bWendu'].str.replace('℃',"").astype('int32')
    df.loc[:,'yWendu'] = df['yWendu'].str.replace('℃',"").astype('int32')df.dtypes"""输出如下"""
    bWendu        int32
    yWendu        int32
    tianqi       object
    fengxiang    object
    fengli       object
    aqi           int64
    aqiInfo      object
    aqiLevel      int64
    dtype: object
    
    df.head()
    """输出如下"""
    

    20210812CGL2RA

查询数据

单个label

  • 使用单个label值查询数据

  • ​ 行或者列,都可以只传入单个值,实现精确匹配

    得到单个值 (2018年1月3日的最高温度)

    # 得到单个值 (2018年1月3日的最高温度)
    df.loc['2018-01-03', 'bWendu']"""输出如下"""
    2
    

    得到一个Series(2018年1月3日的最高温度和最低温度)

    # 得到一个Series(2018年1月3日的最高温度和最低温度)
    df.loc['2018-01-03',['bWendu','yWendu']]"""输出如下"""
    bWendu     2
    yWendu    -5
    Name: 2018-01-03, dtype: object
    

批量查询

  • 使用值列表批量查询

    得到Series:18年1月3,4,5日的最高温度

    # 得到Series
    df.loc[['2018-01-03','2018-01-04','2018-01-05'], 'bWendu']"""输出如下"""
    ymd
    2018-01-03    2
    2018-01-04    0
    2018-01-05    3
    Name: bWendu, dtype: int32
    

    得到DataFrame:18年1月3,4,5日的最高温度和最低温度

    # 得到DataFrame
    df.loc[['2018-01-03','2018-01-04','2018-01-05'], ['bWendu', 'yWendu']]"""输出如下"""
    

    image-20210812170718191

范围查询

  • 使用数值区间进行范围查询

    注意:区间既包含开始,也包含结束

    行index按区间 (2018年1月3日至5号的最高温度和最低温度)

    # 行index按区间 (2018年1月3日至5号的最高温度和最低温度)(series)
    df.loc['2018-01-03':'2018-01-05', 'bWendu']"""输出如下"""
    ymd
    2018-01-03    2
    2018-01-04    0
    2018-01-05    3
    Name: bWendu, dtype: int32
    

    列index按区间

    # 列index按区间(series)
    df.loc['2018-01-03', 'bWendu':'fengxiang']"""输出如下"""
    bWendu        2
    yWendu       -5
    tianqi       多云
    fengxiang    北风
    Name: 2018-01-03, dtype: object
    

    行和列都按区间查询

    # 行和列都按区间查询(DataFrame)
    df.loc['2018-01-03':'2018-01-05', 'bWendu':'fengxiang']"""输出如下"""

    202108126XPzAB

使用条件表达式查询

  • bool列表的长度得等于行数或者列数
简单条件查询
  • 简单条件查询,最低温度低于-10度的列表

    df.loc[df['yWendu']<-10,:]"""输出如下"""
    

    20210812jDOl8U

    观察一下这里的boolean条件

    # 观察一下这里的boolean条件
    df['yWendu']<-10"""输出如下"""ymd
    2018-01-01    False
    2018-01-02    False
    2018-01-03    False
    2018-01-04    False
    2018-01-05    False...  
    2018-12-27     True
    2018-12-28     True
    2018-12-29     True
    2018-12-30     True
    2018-12-31    False
    Name: yWendu, Length: 365, dtype: bool
    
复杂条件查询
  • 复杂条件查询,查一下完美天气

    注意,组合条件用&符号合并,每个条件判断都得带括号

    查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据

    ## 查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据
    df.loc[(df['bWendu']<=30) & (df['yWendu']>15)&(df["tianqi"]=='晴') & (df["aqiLevel"]==1),:]"""输出如下"""
    

    20210812hoALwx

    再次观察这里的boolean条件

    # 再次观察这里的boolean条件
    (df['bWendu']<=30) & (df['yWendu']>15)&(df["tianqi"]=='晴') & (df["aqiLevel"]==1)"""输出如下"""
    ymd
    2018-01-01    False
    2018-01-02    False
    2018-01-03    False
    2018-01-04    False
    2018-01-05    False...  
    2018-12-27    False
    2018-12-28    False
    2018-12-29    False
    2018-12-30    False
    2018-12-31    False
    Length: 365, dtype: bool
    

调用函数查询

lambda表达式
  • 直接写lambda表达式

    # 直接写lambda表达式
    df.loc[lambda df : (df["bWendu"]<=30) & (df["yWendu"]>=15), :]"""输出如下"""
    

    20210812LyQT5B

编写函数
  • 自己编写函数

    # 编写自己的函数,查询9月份,空气质量好的数据
    def query_my_data(df):return df.index.str.startswith("2018-9") & (df["aqiLevel"]==1)df.loc[query_my_data, :]"""输出如下"""
    

    20210812JOKx3h


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com