学习笔记2

学习笔记2

pandas

    引用方法:import pandas as pd
    

    1、一维数据对象:Series(列表和字典的结合体)

        创建方式:pd.Series(list/array, index=['a','b',...])
        例子

pd.Series([2,3,4,5],index=['a','b','c','d'])


        输出

a    2
b    3
c    4
d    5
dtype: int64


        支持数组的特性:
            1、从ndarray创建Series
            2、与标量运算
            3、两个Series的运算:sr1+sr2(按照标签相加)
            4、索引:sr[0],sr[[1,2,4]]
            5、切片:sr[0:4]
            6、通用函数:np.abs(sr)
            7、布尔值过滤:sr[sr>5]
        支持字典的特性:
            1、从字典创建Series:pd.Series(dic)
            2、in 运算:‘a’ in sr
            3、键索引:sr['a']、sr[['a','b','c']]
        sr.index:返回sr的键和类型
        sr.values:返回sr的值
        例子

sr = pd.Series({'a':1,'b':2})
print(sr.index)
print(sr.values)


        输出

Index(['a', 'b'], dtype='object')
[1 2]


        由于Series自带下表索引,当下标索引和标签索引重复时,默认为标签索引。为了避免混乱:
            sr.loc[10]:选取标签为10的元素
            sr.iloc[10]:选取下标为10的元素
            例子

sr = pd.Series(np.arange(10,21),index=np.arange(10,21))
print(sr)
print(sr[10])
print(sr.loc[10])
print(sr.iloc[10])


            输出

10    10
11    11
12    12
13    13
14    14
15    15
16    16
17    17
18    18
19    19
20    20
dtype: int64
10
10
20


        两个Series的运算
            例子

sr1 = pd.Series([12,23,34],index=['c','a','d'])
sr2 = pd.Series([11,20,10],index=['b','c','a'])
print(sr1+sr2)


            输出

a    33.0
b     NaN
c    32.0
d     NaN
dtype: float64


           或者使用函数 add,sub,div,mul
            例子

sr1.add(sr2,fill_value=0) #不改变sr1和sr2


            输出

a    33.0
b    11.0
c    32.0
d    34.0
dtype: float64


        缺失值处理
            sr.isnull():返回一个Series,nan处返回True,否则返回False
            sr.notnull():与isnull相反
            sr.dropna():返回一个Series,扔掉缺失值
            sr.fillna(10):返回一个Series,将所有nan变为10    

    2、二维数据对象:DataFrame

        创建方式:
            pd.DataFrame(dic/Series)
            pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['b','a','c','d'])})
        常用属性:df.xxx
            index:获取行索引
            columns:获取列索引
            T:转置
            values:获取值
            describe():获取快速统计
            insert(列位置,列标签,值列表):插入一行数据
            dtypes:获取数据类型
            size:获取大小
            shape:获取形状
            ndim:获取列数
            axes:获取行、列标签
            mean(axis=0):求平均值
            sum:求和
            sort_values(by=列标签,ascending=True,axis=0):按照某一行排列,ascending为False时降序排列,axis=1时按照列排序。by不可省略,其他可以。nan默认在最后(不管是升序还是降序)
            sort_index(by=...):按照标签的ASCII值排序
            drop():删除行或列
            rename(columns = {'one':'first','two':'second'},inplace = True):对行或列标签重命名
         索引
            df.loc[行,列]:按照标签索引
         数据对齐
            按照标签运算,要是有一个值为nan,计算出来的值也为nan,处理方法和Series大部分相同。
            不同之处:
            df.dropna():删除含有nan的一行
            df.dropna(how='all'):只删除所有元素都是nan的行
            df.dropna(axis=1):删除含有nan的所有列
            df.dropna(subset=列列表):删除含有nan的指定列

    3、时间处理:to_datatime

        时间对象就是以时间序列为索引的Series或DataFrame
        时间序列类型
            时间戳:特定时刻
            固定时期
            时间间隔
        pd.to_datetime(['2001-01-01','2010/Feb/02']):传入一个时间字符串列表/数组,转化为DatetimeIndex,作为时间索引,在Series或DataFrame中通常作为索引存在
        pd.date_range(start,end,periods=n,freq):传出一个DatetimeIndex,可以从start至end,或从start开始往后periods个时间,再指定freq(频率)=‘H’(our),'W'(eek),'B'(usiness),'S'(emi-)'M'(onth),(min)'T'(es),'S'(econd),'A'(year),默认为'D'(ay)
        dt.pydatetime():将DatetimeIndex转化为一个datetime对象
        例子1

dt = pd.date_range(end='2021-01-01',periods=10,freq='B')
print(dt[0].to_pydatetime())


        输出

2020-12-21 00:00:00


        例子2

sr = pd.Series(np.arange(5),index=pd.date_range('2017-01-30',periods = 5))
print(sr)


        输出

2017-01-30    0
2017-01-31    1
2017-02-01    2
2017-02-02    3
2017-02-03    4
Freq: D, dtype: int64

 

sr.index


        输出

DatetimeIndex(['2017-01-30', '2017-01-31', '2017-02-01', '2017-02-02','2017-02-03'], dtype='datetime64[ns]', freq='D')


        索引
            sr['2017-01']:切出2017年1月的数据
            sr['2017-01':'2018-03-05']:切出2017年1月至2018年3月5日的数据(前包后包)
            例子

sr['2017-01']  #按照月份切出


            输出

2017-01-30    0
2017-01-31    1
Freq: D, dtype: int64


        属性
            resample(freq).sum()/mean():按照freq求总和、平均等
            truncate(before,after):切出before后的数据或after前的数据(包括before或after)

    4、文件处理:支持json,XML,HTML,数据库,pickle,excel等文件类型


        读入文件:read_csv('test.csv',index_col,parse_date,header,names):
            读取test.csv文件
            index_col='date':将'date'作为索引
            parse_date='date':将'date'列中所有能转化成时间对象的转化为时间对象,若parse_date=True,则操作对象为整个表
            header=None:自动创建列名
            names=['a','b','c']:指定列名
            sep:指定分隔符
            skip_row:跳过指定行
            na_values:指定某些字符为缺失值
        读入文件read_table():分隔符为制表符
        写入文件to_csv:
            sep
            na_rep:与na_values相反,将指定缺失值转化为字符串
            header:=False不输出列名
            index:=False不输出行索引
            columns:输出指定列,传入列表
        处理excel文件需要另外装xlrd库     

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值