您好,登錄后才能下訂單哦!
pandas包
# 引入包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Series
Series 是一維帶標簽的數組,數組里可以放任意的數據(整數,浮點數,字符串,Python Object)。其基本的創建函數是:
s = pd.Series(data, index=index)
其中 index 是一個列表,用來作為數據的標簽。data 可以是不同的數據類型:
Python 字典
ndarray 對象
一個標量值,如 5
Series創建
s = pd.Series([1,3,5,np.nan,6,8])
Series日期創建
# 生成日期 從2013-01-01 生成至 2013-01-06
dates = pd.date_range('20130101', periods=6)
# DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04','2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D')
Series創建列表
# 生成2列 第一列: 012345678910 第二列: abbcdabacad
s = pd.Series(list('abbcdabacad'))
# 統計不同的列名
s.unique()
# 統計列名出現的次數
s.value_counts()
# 判斷第一列是否在列表中
s.isin(['a', 'b', 'c'])
Series索引
# 兩列一列abcde 一列5個隨機數
s = pd.Series(np.random.rand(5), index=list('abcde'))
# s的列名(第一列),是Index對象
s.index
# 添加一行 alpha
s.index.name = 'alpha'
# 返回所有第一列為'a'的值
s['a']
# 是否有重復的index
s.index.is_unique
# 返回不重復index
s.index.unique()
# 按index分組,求出每組和
s.groupby(s.index).sum()
DataFrame
DataFrame 是二維帶行標簽和列標簽的數組。可以把 DataFrame 想你成一個 Excel 表格或一個 SQL 數據庫的表格,還可以相像成是一個 Series 對象字典。它是 Pandas 里最常用的數據結構。
DataFrame創建
df = pd.DataFrame(np.random.randn(4, 6), index=list('ADFH'), columns=['one', 'two', 'three', 'four', 'five', 'six'])
# 添加index 如果該index沒有對應值設為NaN
df2 = df.reindex(index=list('ABCDEFGH'))
# 重新設置col(行頭)
df.reindex(columns=['one', 'three', 'five', 'seven'])
# 把NaN值設為默認的0
df.reindex(columns=['one', 'three', 'five', 'seven'], fill_value=0)
# fill method 只對行有效
df.reindex(columns=['one', 'three', 'five', 'seven'], method='ffill')
# 重置列index
df.reindex(index=list('ABCDEFGH'), method='ffill')
DataFrame操作
df = pd.DataFrame(np.random.randn(4, 6), index=list('ADFH'), columns=['one', 'two', 'three', 'four', 'five', 'six'])
# 所有index 為'A' col 為'one'的位置的值設置為100
df.loc['A']['one'] = 100
# 舍棄index 為'A'的行
df.drop('A')
# 舍棄columns 為 'two' 'four'的列
df2 = df.drop(['two', 'four'], axis=1)
# 數據拷貝
df.iloc[0, 0] = 100
# 獲取index 為'one'的行
df.loc['one']
DataFrame計算
df = pd.DataFrame(np.arange(12).reshape(4, 3), index=['one', 'two', 'three', 'four'], columns=list('ABC'))
# 每一列作為一個 Series 作為參數傳遞給 lambda 函數
df.apply(lambda x: x.max() - x.min())
# 每一行作為一個 Series 作為參數傳遞給 lambda 函數
df.apply(lambda x: x.max() - x.min(), axis=1)
# 返回多個值組成的 Series
def min_max(x):鄭州人流多少錢 http://mobile.zyyyzz.com/
return pd.Series([x.min(), x.max()], index=['min', 'max'])
df.apply(min_max, axis=1)
# applymap 逐元素計算 每個值保留2位小數
formater = '{0:.02f}'.format
df.applymap(formater)
DataFrame列選擇/增加/刪除
df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three', 'four'])
# 第三列 為 第一列 加上 第二列
df['three'] = df['one'] + df['two']
# 添加一個flag列 大于0為True 否則為False
df['flag'] = df['one'] > 0
# 刪除col為'three'的列
del df['three']
# 獲取被刪的
four = df.pop('three')
# 選取col為 five
df['five'] = 5
#
df['one_trunc'] = df['one'][:2]
# 指定插入位置
df.insert(1, 'bar', df['one'])
使用assign() 方法來插入新列
df = pd.DataFrame(np.random.randint(1, 5, (6, 4)), columns=list('ABCD'))
# 新列Ratio 值為 df['A'] / df['B']
df.assign(Ratio = df['A'] / df['B'])
# 新列AB_Ratio CD_Ratio 值為lambda表達式的值
df.assign(AB_Ratio = lambda x: x.A / x.B, CD_Ratio = lambda x: x.C - x.D)
DataFrame排序
df = pd.DataFrame(np.random.randint(1, 10, (4, 3)), index=list('ABCD'), columns=['one', 'two', 'three'])
# 按index 為one 排序
df.sort_values(by='one')
#
s.rank()
DataFrame操作
DataFrame 在進行數據計算時,會自動按行和列進行數據對齊。最終的計算結果會合并兩個 DataFrame。
df1 = pd.DataFrame(np.random.randn(10, 4), index=list('abcdefghij'), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randn(7, 3), index=list('cdefghi'), columns=['A', 'B', 'C'])
df1 + df2
df1 - df1.iloc[0]
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。