資料分析02

G-無憂仙-LB發表於2020-11-09
                            第二節

1、Series的屬性與方法:
    Series中一般常用的引數就是data、index,其中的data就是我們處理的資料,index就是這個資料的行索引
    Series中的函式一般有index、values以及items,values、index、items返回的物件分別是List、Index、
    Zip型別的資料,為了方便我們使用和觀察資料,可以使用series.index.tolist()和list(series.items())
    方法轉化成List型別。用法如下:
    ***
        from pandas import Series
        name=["小明","小花","小東","小李"]
        S1=Series(data=name)
        print(S1)
        print(S1.values)
        print(S1.index.tolist())    #這裡的tolist函式就是把index函式生成的物件轉換為列表
        print(list(S1.items()))     #這裡的list同樣是把zip物件轉換為列表
    ***

    Series中的資料除了可以通過索引進行獲取,還可以通過切片操作進行獲取元素,而且如果一次性獲取多個元素
    還可以把這些元素的索引直接放在列表中進行多個元素的獲取

    ***
        from pandas import Series
        emp=['001','002','003','004','005','006']
        name=['亞瑟', '後裔','小喬','哪吒' ,'虞姬','王昭君']
        series = Series(data=name,index=emp)
        # 使用索引值獲取單個資料
        print(series['001'])
        # 使用索引值獲取多個不連續的資料
        print('索引下標',series[['002','004']])
        # 使用切片獲取連續的資料
        print('索引切片',series['001':'004'])
    ***

    除此之外Series物件可以直接使用迴圈遍歷出裡面的值,也可以使用Series.keys()獲取該物件的索引,同時也可以通過
    Series物件中的items()函式把裡面的索引和值找出來


2、DataFrame中的資料是按著行和列進行排列的,可以根據行和列進行選擇、遍歷和修改
    ***
    df_dict = {
   'name':['ZhangSan','LiSi','WangWu','ZhaoLiu'],
   'age':['18','20','19','22'],
   'weight':['50','55','60','80']
    }
    df = pd.DataFrame(data=df_dict,index=['001','002','003','004'])
    ***
    (1)檢視DataFrame中資料的維度:
        weidu=df.ndim
    (2)獲取DataFrame的行數和列數:
        hanglie=df.shape       注:返回值是一個元組,表示的就是行數和列數
    (3)獲取行索引和列索引:
        print(df.index.tolist())————返回行索引
        print(df.columns.tolist())————返回列索引
    (4)獲取DataFrame資料中的前面幾行或者是後面幾行可以通過切片或者是函式:
        print(df[0:2])———————————————用切片獲取前2行的資料
        print(df.head(2))————————————用函式獲取前2行的資料
        print(df[索引的長度-2::])————用切片獲取後2行的資料
        print(df,tail(2))—————————————用函式獲取後2行的資料

        【神仙的自我修養】
        # df[]不支援直接輸入標籤索引獲取行資料,例如:df['001']
        # 這種方式可以獲取一列資料,列如:df['name']
        # 如果想獲取多行裡面的某幾列可寫成:df[行][列],例如:df[1:3][['name','age']],將列索引值放
        到同一個列表中,再將列表放到第二個方括號中

    (5)獲取資料:
        通過標籤索引來獲取資料,即使用loc函式來獲取資料,用法:
            df.loc(行,列)

            5.1、獲取某一行某一列的資料
                print(df.loc['001','name'])
            5.2、某一行多列的資料
                print(df.loc['001',['name','weight']])
            5.3、一行所有列
                print(df.loc['001',:])
            5.4、選擇間隔的多行多列
                print(df.loc[['001','003'],['name','weight']])
            5.5、選擇連續的多行和間隔的多列
                print(df.loc['001':'003','name':'weight'])

        也可以直接通過位置索引來獲取資料,即使用iloc函式獲取資料,用法:
            df.iloc(行,列)

            5.6、取一行
                print(df.iloc[1])
            5.7、取連續多行
                print(df.iloc[0:2])
            5.8、取間斷的多行
                print(df.iloc[[0,2],:])
            5.9、取某一列
                print(df.iloc[:,1])
            5.10、某一個值
                print(df.iloc[1,0])

        注:loc函式和iloc函式在進行切片操作時對於切片終點的取值是不一樣的,loc函式使用即根據標籤索引是包含終點資料的,
            而iloc函式即使用位置索引獲取資料是不包含終點資料,和列表的切片類似

    (6)按行/列遍歷資料
        按行遍歷
        iterrows(): 按行遍歷,將DataFrame的每一行轉化為(index, Series)對。index為行索引值,Series為該行對應的資料。
            for index,row_data in df.iterrows():
                print(index,row_data)

        按列遍歷
        iteritems():按列遍歷,將DataFrame的每一列轉化為(column, Series)對。column為列索引的值,Series為該列對應的資料。
            for col,col_data in df.iteritems():
                print(col)

相關文章