Python的Pandas庫簡述

獵手家園發表於2017-06-28

pandas 是 python 的資料分析處理庫
import pandas as pd

1、讀取CSV、TXT檔案

foodinfo = pd.read_csv("pandas_study.csv", encoding = "utf-8")

 

2、檢視前N條、後N條資訊

foodinfo.head(N)
foodinfo.tail(N)

 

3、檢視資料框的格式,是DataFrame還是ndarray

print(type(foodinfo))
# 結果:<class 'pandas.core.frame.DataFrame'>

 

4、檢視有哪些列

foodinfo.columns

 

5、檢視有幾行幾列

foodinfo.shape

 

6、列印某一行、某幾行資料

foodinfo.loc[0]
foodinfo.loc[0:2]
foodinfo.loc[[2, 5, 10]]    #注意裡面是一個陣列

 

7、列印某一列、某幾列資料

foodinfo["dti"]
foodinfo[["int_rate", "dti"]]    #注意裡面是一個陣列
# 或者:
columns = ["int_rate", "dti"]
foodinfo[columns]

 

8、列印所有列的資料型別

foodinfo.dtypes

 

9、對列的一些相關操作

col_columns = foodinfo.columns.tolist()
new_columus = []

for c in col_columns:
if c.endswith("s"):
new_columus.append(c)
print(c)

foodinfo[new_columus]

 

10、加減乘除:將每行都乘以100(加 減 乘 除 一樣)

foodinfo[["int_rate", "dti"]] * 100

 

11、增加一列

new_col = foodinfo["int_rate"] * 100
foodinfo["new_col"]= new_col

 

12、列之間的運算

foodinfo["dti"] * foodinfo["int_rate"]

 

13、檢視列的最大值、最小值、平均值

foodinfo["int_rate"].max()
foodinfo["int_rate"].min()
foodinfo["int_rate"].mean()

 

14、按某個欄位排序 - 升序

# inplace是否新建一個dataframe,True不需要
foodinfo.sort_values("int_rate_one", inplace = True)

# 按某個欄位排序 - 降序
foodinfo.sort_values("int_rate_one", inplace = True, ascending = False)

 

15、檢視資料框的一些屬性:最大、最小、均值、四分位數等

foodinfo.describe()

 

16、空值相關的操作

pin = foodinfo["pin"]
pin_isnull = pd.isnull(pin) # 檢視所有空值
pin_isnull_list = foodinfo[pin_isnull] # 找出所有為空值的行
len(pin_isnull_list)        # 空值的個數

 

17、缺失值相關操作

# 簡單的處理辦法就是過濾掉null值
books = foodinfo["life_cycle_books"]
book_isnull = pd.isnull(books)
book_list_isnull = foodinfo["life_cycle_books"][book_isnull == False]
mean = sum(book_list_isnull) / len(book_list_isnull)    # 計算平均值

 

18、根據條件列印某列資料

foodinfo[foodinfo["life_cycle_books"] == 1]

 

19、資料透視表

import numpy as np
# index:要透視的列
# values:要比較的關係列
# aggfunc:具體的關係,預設值:np.mean
data_foodinfo = foodinfo.pivot_table(index = ["life_cycle_books", "potential_value_books"], values = "risk_level", aggfunc = np.mean)
print(data_foodinfo)

 

20、刪除缺失值

# 所有行
na_foodinfo = foodinfo.dropna(axis = 1)
# 可以指定列
na_foodinfo = foodinfo.dropna(axis = 0, subset = ["life_cycle_books", "potential_value_books"])

 

21、自由取資料 如:取80行 life_cycle_books列

foodinfo.loc[80, "life_cycle_books"]

 

22、重新排索引

foodinfo.reset_index(drop = True)

 

23、自定義函式:返回空值個數

def count_null_columns(column):
    column_null = pd.isnull(column)
    list_null = column[column_null]
    count_null = len(list_null)
    return count_null
foodinfo.apply(count_null_columns)

 

24、Series

# pandas 三種資料結構
# Series
# DataFrame
# Panel
from pandas import Series

 

25、Series顯示某一列資料

series_name = taitan["Name"]
series_name.values

 

26、定位某行某列

series_name = taitan["Name"]
series_age = taitan["Age"]
series_custom = Series(series_age.values, index = series_name)
series_custom[["Ahlin, Mrs. Johan (Johanna Persdotter Larsson)", "Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)"]]
# 說明:series_custom[""] 按列取 series_custom[[""]] 按行取

 

27、取5-10行資料,和上面一樣:

series_custom[5: 10]

 

28、index變換

old_index = series_custom.index.tolist()
sort_index = sorted(old_index)
new_index = series_custom.reindex(sort_index)
print(new_index)

 

29、Series按索引和值排序的函式

sc1 = series_custom.sort_index()
print(sc1)
sc2 = series_custom.sort_values()
print(sc2)

 

30、Series 過濾

series_custom > 0.5
series_custom[series_custom > 0.5]
series_custom[(series_custom > 0.5) & (series_custom < 0.9)]
# 注:&、| 都是單符號

 

31、DataFrame

# Series是一行資料,DataFrame是多行資料
# DataFrame 可以看成由多個 Series 組成的
df = pd.read_csv("titanic_train.csv")

 

32、DataFrame的索引變換

# drop 是否新建立一個DF,True否 False是(表示還要保留Name這一列,否則一會無法進行計算)
df_name = df.set_index("Name", drop = False)

 

33、DataFrame檢視某一型別的資料

types = df_name.dtypes
float_columns = types[types.values == "float64"].index
df_name[float_columns]

 

34、DataFrame求方差

float_df = df_name[float_columns]
float_df.apply(lambda x: np.std(x))

 

相關文章