<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## Pandas ### Series 和 DataFrame ``` import pandas as pd import numpy as np from pandas import Series, DataFrame ``` * Series 序列 列和行索引,相當于一維數組 * DataFrame 數據幀 列和行 行索引和列標簽 相當于二維數組 * 自動對齊 時間序列 缺失補全 * 1 創建序列 * 創建序列 * 創建序列指定索引 * 指定索引名 ``` s1 = Series([1, 2, 3, 4, 5]) s1 s2 = Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']) s2 s2.index.name = 'index' s2.index ``` * rand 0-1 隨機均勻分布 * randn 標準狀態分布 均值0 方差1 * 2 創建數據幀 * 指定索引 指定標簽 * 查看索引 * 查看標簽 ``` df = DataFrame(np.random.rand(4, 4), index=['a', 'b', 'c', 'd'], columns=['A', 'B', 'C', 'D']) df df.index df.columns ``` ### 選擇 * 3 序列選擇 * 通過序列索引 * 通過自定義索引 * 通過序列索引切片 * 通過自定義索引切片 * 通過序列.iloc(序列索引) * 通過序列.loc(自定義索引) ``` s2 = Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']) s2 s2[0] s2['a'] s2[0:3] s2['a':'c'] s2.iloc[0:3] s2.loc['a':'c'] ``` * 4 數據幀獲取列 * 獲取數據幀某列 數據幀.列標簽 * 獲取數據幀多列 數據幀[數據幀.columns[index]] ``` df df.A df['A'] df[df.columns[0:2]] ``` * 5 數據幀獲取多行 * 獲取數據幀某行 數據幀.loc[行自定義索引] * 獲取數據幀某行 數據幀.iloc[行索引] * 獲取數據幀多行 數據幀.loc[自定義索引:] ``` df df.loc['a'] df.loc['a':'b'] df.iloc[0] ``` * 6 數據幀獲取多列 * 獲取數據幀多列 數據幀.loc[:,自定義列標簽] * 獲取數據幀某個具體位置值 數據幀.loc[行索引,列標簽] * 獲取數據幀部分 數據幀.loc[行索引:,列標簽:] ``` df.loc[:, ['B', 'C', 'D']] df df.loc['a', 'A'] df.loc['b':'c', 'B':'C'] ``` ### 缺失值和數據自動對齊 * 7 序列缺失值 * 產生缺失值 兩個序列索引不一樣運算產生缺失值 * 求和時 缺失值補全 ``` s1 = Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) s1 s2 = Series([2, 3, 4, 5], index=['b', 'c', 'd', 'e']) s2 s1 + s2 s1.add(s2,fill_value=0) ``` * 8 數據幀缺失值 * 產生缺失值 兩個數據幀 形狀 行索引 列標簽不一樣產生缺失值 * 求和時 缺失值補全 ``` df1 = DataFrame(np.arange(9).reshape(3,3), columns=list('ABC'), index=list('abc')) df2 = DataFrame(np.arange(12).reshape(3,4), columns=list('ABDE'), index=list('bcd')) df1 df2 df1 + df2 df1.add(df2, fill_value=0) ``` ### 常用運算 * `apply()` 作用于一維向量上 * `applymap()` 作用于所有元素上 * 9 數據幀運算 * 數據幀應用匿名函數列應用 * 數據幀應用匿名函數行應用 ``` df1 = DataFrame(np.arange(9).reshape(3,3), columns=list('ABC'), index=list('abc')) df1 f = lambda x: x.max() - x.min() df1.apply(f) df1.apply(f, axis=1) ``` * 10 數據幀運算 * 數據幀應用匿名函數作用所有元素 ``` df1.applymap(lambda x: x+1) ``` ### 常用統計 * 11 數據幀統計運算 * 列元素求和 * 行元素求和 * 求平均 * 查看統計元素 ``` df1 = DataFrame(np.arange(9).reshape(3,3), columns=list('ABC'), index=list('abc')) df1 df1.sum() df1.mean() df1.sum(axis=1) df1.describe() ``` ### 數據合并和分組 * 12 數據幀 * 兩個數據幀拼接 ``` df1 = DataFrame(np.random.randn(3, 3)) df2 = DataFrame(np.random.randn(3, 3), index=[5, 6, 7]) df1 df2 pd.concat([df1, df2]) ``` * 13 數據幀 * 兩個數據幀合并 ``` df1 = DataFrame({'user_id': [5348, 13], 'course': [12, 45], 'minutes': [9, 36]}) df2 = DataFrame({'course': [12, 45], 'name': ['Linux 基礎入門', '數據分析']}) df1 df2 pd.merge(df1, df2) ``` * 14 數據幀數據統計 * 指定標簽值 標簽值求和 * 找出指定id,minutes標簽值求和 ``` df = DataFrame({'user_id': [5348, 13, 5348], 'course': [12, 45, 23], 'minutes': [9, 36, 45]}) df df[df['user_id'] == 5348]['minutes'] df[df['user_id'] == 5348] df[df['user_id'] == 5348]['minutes'].sum() ``` * 15 數據幀數據統計 * 過來列id,minute 通過id分組求和 ``` df[['user_id', 'minutes']] df[['user_id', 'minutes']].groupby('user_id').sum() ``` ### 時間序列處理 * datetime.datetime 代表時間對象 * datetime.date 代表某一天 * datetime.timedelta 時間差 * 16 時間對象 * 創建時間對象 datetime(年,月,日) * 加上時間間隔 ``` from datetime import datetime, timedelta d1 = datetime(2017, 8, 1) d1 delta = timedelta(days=10) d1 + delta ``` * 17 創建序列 * 創建序列加上時間索引 * 查看序列索引 ``` from datetime import datetime dates = [datetime(2018, 1, 1), datetime(2018, 1, 2), datetime(2018, 1, 3), datetime(2018, 1,4)] ts = Series(np.random.randn(4), index=dates) ts ts.index ts.index[0] ``` * 18 時間序列索引使用 * 通過時間序列索引找對應的值 ``` ts.index[0] ts[ts.index[0]] ts['2018-01-01'] ts['2018/01/01'] ts['1/1/2018'] ts[datetime(2018, 1, 1)] ``` * 19 使用pandas生成日期索引 * date_range(起始,結束,freq頻率) ``` pd.date_range('2018-1-1', '2019', freq='M') pd.date_range('2018-1-1', '2018-12-1', freq='MS') ``` * 20 生成時間索引序列 * 使用date_range生成時間索引 頻率為小時 * 使用Series生成時間日期序列 ``` dates = pd.date_range('2018-1-1', '2018-1-2 23:00:00', freq='H') ts = Series(np.arange(len(dates)), index=dates) ts.size ts.head(5) ts.tail(5) ``` * 21 高低頻統計轉化 * 高頻轉為低頻H轉為D,求和 * 高頻轉為低頻,求平均 * 高頻轉低頻求平均再轉高頻求平均 * 高頻轉低頻求平均再轉高頻求平均無效填充 ``` ts.resample('D').sum() ts.resample('D').mean() ts.resample('D').mean().resample('H').mean() ts.resample('D').mean().resample('H').ffill() ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看