中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

pandas處理數據的基本方法

發布時間:2020-06-28 03:47:44 來源:網絡 閱讀:909 作者:nineteens 欄目:編程語言

  pandas的數據結構常用到一維(series),二維(DataFrame)等:

  對于二維數據

  二維數據包含行索引和列索引

  行索引叫index,axis=0

  列索引叫columns,axis=1

  下面使用代碼構造一個二維結構數據如下:

  import pandas as pd

  import numpy as np

  # normal里面參數,此次構造的是平均值為0,標準差為1,10行11列數據

  test_data = np.random.normal(0,1,[10,11])

  test_data_frame = pd.DataFrame(test_data)

  print(test_data_frame)

  可以看出,默認添加了行索引[index]和列索引[columns]

  若需要自己指定行索引或者列索引,可以在構造DataFrame時加相應參數,如下這樣: np.random.normal(0,1,[10,11])

  index_list = ["row"+str(i) for i in range(10)]

  column_list = ["column"+str(i) for i in range(11)]

  test_data_frame = pd.DataFrame(test_data,index=index_list,columns=column_list)

  print(test_data_frame)

  打印效果如下:

  可以通過test_data .shape獲取數據的行列形狀([10,11]),即可以這樣獲取數據的行數和列數:

  # 獲取行數

  test_data.shape[0]

  # 獲取列數

  test_data.shape[1]

  對于DataFrame的其他數據獲取如下:

  # 獲取行索引列表

  test_data_frame.index

  # 獲取列索引列表

  test_data_frame.columns

  # 獲取除索引外的數據矩陣值

  test_data_frame.values

  # 將數據轉置(包括索引)

  test_data_frame.T

  # 獲取數據前num行(若沒有num值,默認獲取前五行)

  num=5

  test_data_frame.head(num)

  # 獲取數據后num行(若沒有num值,默認獲取后五行)

  test_data_frame.tail(num)

  # 將原來的行索引刪除,變成默認的數字行索引

  test_data_frame = test_data_frame.reset_index(drop=True)

  # 將原來的行索引變成值,用默認的數字行索引作為行索引

  test_data_frame = test_data_frame.reset_index()

  還可以設置多重索引如下:

  test_data_frame=test_data_frame.set_index(keys=['column0','column1'])

  print(test_data_frame)

  打印效果如下:

  此時的數據結構為MultiIndex結構數據(三維數據)

  可以通過pandas生成一組連續時間序列

  # 構建一個從2018.1.1開始的10天時間序列

  date_test = pd.date_range(start='2018-1-1',end=None,periods=10,freq="D")

  print(date_test)

  打印效果如下:

  其中start為開始時間,end為結束時間,periods為相隔天數(若無end的情況下),freq為指定間隔時間,默認為“D”(每天),可以指定“12H”表示每12小時,“B”每個工作日(周一到周五,包含節假日)

  series一維結構:

  一維數據(series)只有行索引

  即將二維Dataframe取特定行就是一維數據如:

  serise_data = test_data_frame['column1']

  print(serise_data)

  打印效果如下:

  pandas中二維Dataframe數據獲取

  直接使用索引獲取數據必須先列后行

  如取第一列,第三行數據,test_data_frame[‘column0’][‘row2’]

  通過索引獲取數據:

  通過索引名獲取范圍數據

  # start_index:end_index,表示開始的行索引到結束的行索引,xx_column表示取哪一列的值

  test_data_frame.loc[start_index:end_index,xx_column]

  通過索引下標獲取范圍數據

  # 表示取第0行到第3行的xx_column列的值

  test_data_frame.iloc[0:3,xx_column]

  通過索引進行排序

  # ascending默認為Ture升序

  test_data_frame = test_data_frame.sort_index(ascending=False,)

  print(test_data_frame)

  打印效果如下:

  通過內容進行排序

  # by指定通過哪一列排序,此處為第二列,降序

  test_data_frame = test_data_frame.sort_values(by="column1",ascending=False,)

  print(test_data_frame)

  打印效果如下:

  DataFrame數據統計分析的基本方法

  求極值的方法

  求最大值:

  # 對列求最大值

  test_data_frame.max(0)

  # 對行求最大值

  test_data_frame.max(1)

  # 求最小值同理

  test_data_frame.max(0) #對列求最小值

  test_data_frame.max(1) #對行求最小值

  對列求最大值如下:

  對行求最大值如下:

  還可以獲取最大值和最小值的位置

  # 獲取列最大值的位置

  test_data_frame.idxmax(axis=0)

  # 獲取行最大值的位置

  test_data_frame.idxmax(axis=1)

  # 獲取列最小值得位置

  test_data_frame.idxmin(axis=0)

  # 獲取行最小值得位置

  test_data_frame.idxmin(axis=1)

  列最大值的位置如下:

  行最大值位置如下:

  累計求和無錫正規婦科醫院 http://www.jlfukeyy.com/

  # 累計求第二列的值

  test_data_frame.column1.cumsum()

  打印結果如下:

  不能使用test_data_frame.row1.cumsum()累計求行的和

  通過比較大小來篩選數據

  # 取第二列大于0,且第四列大于0的數據

  test_data_frame[(test_data_frame['column1'] > 0) & (test_data_frame['column3'] > 0)]

  打印效果如下:

  還可以這樣篩選如下:

  # 取第二列大于0,且第四列大于0的數據

  test_data_frame.query("column1>0 & column3>0")

  打印結果與上面一致

  文件讀寫方法

  讀取csv文件

  # 讀取xxxx.csv文件,并只讀取第二列和第三列數據

  csv_dataframe = pd.read_csv("xxxx.csv",usecols=['column1', 'column2'])

  讀取excel文件

  # 讀取xxx.xlsx文件

  excel_data = pd.read_excel('xxx.xlsx')

  寫入csv文件

  # index表示是否將行索引寫入文件,columns指定將哪幾列寫入到文件

  # mode默認為r,表示重寫,a表示追加,header表示是否將索引列寫入文件

  test_data_frame.to_csv('xxx.csv',index=False,columns=['column1','column2','column3'],mode='a',header=False)

  寫入到excel文件類似的

  # index表示是否將行索引寫入文件,columns指定將哪幾列寫入到文件

  # excel沒有mode參數,header表示是否將索引列寫入文件

  test_data_frame.to_excel('xxx.xlsx',index=False,columns=['column1','column2','column3'],header=False)

  excel如下:

  缺失值處理的方法

  處理缺失值為NaN的數據

  可以刪除NaN的行:test_data_frame.dropna()

  也可以以其他值添加:

  # 將第二列數據的NaN值用該列的平均值替換,test_data_frame['column1'].mean()取第二列的平均值

  test_data_frame['column1'].fillna(test_data_frame['column1'].mean(),inplace=True)

  處理缺失值為其他(如?)的數據

  其他格式異常值替換可以先將其替換成NaN的值再通過NaN替換成其他如平均值等

  # 將test_data_frame 中的?全部替換成NaN的值

  test_data_frame = test_data_frame.replace(to_replace="?",value=np.nan)

  然后再通過上面的缺失值NaN處理


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广元市| 定西市| 海伦市| 西青区| 山阴县| 二连浩特市| 呼玛县| 屯留县| 邢台市| 白沙| 吉隆县| 金秀| 马山县| 九江市| 家居| 琼结县| 新余市| 成安县| 冕宁县| 高平市| 恩施市| 萨嘎县| 肇东市| 开江县| 宜良县| 石楼县| 慈溪市| 惠东县| 曲水县| 天气| 镶黄旗| 高安市| 胶南市| 黄冈市| 平果县| 思南县| 垫江县| 峨眉山市| 晋宁县| 泗水县| 方山县|