Python中的DataFrame模塊學習

  本文是基於Windows系統環境,學習和測試DataFrame模塊:

  Windows 10

  PyCharm 2018.3.5 for Windows (exe)

  python 3.6.8 Windows x86 executable installer

  1. 初始化DataFrame

  創建一個空的DataFrame變量

  import pandas as pd

  import numpy as np

  data = pd.DataFrame()

  print(np.shape(data)) # (0,0)

  通過字典創建一個DataFrame

  import pandas as pd

  import numpy as np

  dict_a = {'name': ['xu', 'wang'], 'gender': ['male', 'female']}

  data = pd.DataFrame(dict_a)

  print(np.shape(data)) # (2,2)

  print(data)

  # data =

  # name gender

  # 0 xu male

  # 1 wang female

  通過numpy.array創建一個DataFrame

  import pandas as pd

  import numpy as np

  mat = np.random.randn(3,4)

  df = pd.DataFrame(mat)

  df.columns = ['a','b','c','d']

  print(df)

  一個DataFrame轉成numpy.array

  import pandas as pd

  import numpy as np

  mat = np.random.randn(3,4)

  df = pd.DataFrame(mat)

  df.columns = ['a','b','c','d']

  print(df)

  n = np.array(df)

  print(n)

  DataFrame增加一列數據

  import pandas as pd

  import numpy as np

  data = pd.DataFrame()

  data['ID'] = range(0,10)

  print(np.shape(data)) # (10,1)

  DataFrame增加一列數據,且值相同

  import pandas as pd

  import numpy as np

  dict_a = {'name': ['xu', 'wang'], 'gender': ['male', 'female']}

  data = pd.DataFrame(dict_a)

  data['country'] = 'China'

  print(data)

  # data =

  # name gender country

  # 0 xu male China

  # 1 wang female China

  DataFrame刪除重複的數據行

  import pandas as pd

  norepeat_df = df.drop_duplicates(subset=['A_ID', 'B_ID'], keep='first')

  # norepeat_df = df.drop_duplicates(subset=[1, 2], keep='first')

  # keep=False時,就是去掉所有的重複行

  # keep=‘first'時,就是保留第一次出現的重複行

  # keep='last'時就是保留最後一次出現的重複行。

  2. 基本操作

  去除某一列兩端的指定字符

  import pandas as pd

  dict_a = {'name': ['.xu', 'wang'], 'gender': ['male', 'female.']}

  data = pd.DataFrame(dict_a)

  print(data)

  # data =

  # name gender

  # 0 .xu male

  # 1 wang female.

  data['name'] = data['name'].str.strip('.') # 刪除'.'

  # data['name'] = data['name'].str.strip() # 刪除空格

  print(data)

  # data =

  # name gender

  # 0 xu male

  # 1 wang female.

  重新調整index的值

  import pandas as pd

  data = pd.DataFrame()

  data['ID'] = range(0,3)

  # data =

  # ID

  # 0 0

  # 1 1

  # 2 2

  data.index = range(1,len(data) + 1)

  # data =

  # ID

  # 1 0

  # 2 1

  # 3 2

  調整DataFrame列順序

  import pandas as pd

  data = pd.DataFrame()

  print(data)

  # data =

  # ID name

  # 0 0 xu

  # 1 1 wang

  # 2 2 li

  data = data[['name','ID']]

  # data =

  # name ID

  # 0 xu 0

  # 1 wang 1

  # 2 li 2無錫人流醫院 http://www.bhnfkyy.com/

  獲取DataFrame的列名

  import pandas as pd

  data = pd.DataFrame()

  print(data)

  # data =

  # ID name

  # 0 0 xu

  # 1 1 wang

  # 2 2 li

  print(data.columns.values.tolist())

  # ['ID', 'name']

  獲取DataFrame的行名

  import pandas as pd

  data = pd.DataFrame()

  print(data)

  # data =

  # ID name

  # 0 0 xu

  # 1 1 wang

  # 2 2 li

  print(data._stat_axis.values.tolist())

  # [0, 1, 2]

  3. 讀寫操作

  將csv文件讀入DataFrame數據

  read_csv()函數的參數配置參考官網pandas.read_csv

  import pandas as pd

  data = pd.read_csv('user.csv')

  print (data)

  將DataFrame數據寫入csv文件

  to_csv()函數的參數配置參考官網pandas.DataFrame.to_csv

  import pandas as pd

  data = pd.read_csv('test1.csv')

  data.to_csv("test2.csv",index=False, header=True)

  4. 異常處理

  過濾所有包含NaN的行

  dropna()函數的參數配置參考官網pandas.DataFrame.dropna

  from numpy import nan as NaN

  import pandas as pd

  data = pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])

  print (data)

  # data =

  # 1 2 3

  # NaN NaN 2

  # NaN NaN NaN

  # 8 8 NaN

  data = data.dropna()

  # DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

  # axis: 0 or 'index'表示去除行 1 or 'columns'表示去除列

  # how: 'any'表示行或列只要含有NaN就去除,'all'表示行或列全都含有NaN纔去除

  # thresh: 整數n,表示每行或列中至少有n個元素補位NaN,否則去除

  # subset: ['name', 'gender'] 在子集中去除NaN值,子集也可以index,但是要配合axis=1

  # inplace: 如何爲True,則執行操作,然後返回None

  print(data)

  # data =

  # 1 2 3


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章