Python Pandas 常用方法

1、Pandas常用方法

工作中經常用到pandas,所以現在有時間就加點內容,以便查閱!

import numpy as np
import pandas as pd

# 生成一個DataFrame數據
dates = pd.date_range('20191201',periods=5)
df = pd.DataFrame(np.random.randn(5, 5),index=dates,columns=list('ABCDE'))
df.iloc[1,0] = df.iloc[0,0]
df.iloc[1,1] = df.iloc[0,1]
print(df)
"""
                   A         B         C         D         E
2019-12-01 -0.400561  1.916244 -0.027848  1.726683 -0.825451
2019-12-02 -0.400561  1.916244 -0.341435 -2.341047 -2.216682
2019-12-03  1.165244 -0.489673 -0.479814  0.360694  1.670459
2019-12-04 -0.339122  0.169905 -0.970991 -0.303687  1.663149
2019-12-05  0.752542  0.989045  0.724454 -0.034715  1.240655
"""

# 修改列名
df.rename(columns={'A':'a', 'B':'b'}, inplace = False)
"""
                   a         b         C         D         E
2019-12-01 -0.905754  0.079627  0.770437  0.982166 -0.071950
2019-12-02 -0.905754  0.079627  2.535105  1.070351 -0.852405
2019-12-03  0.323004 -2.003110 -1.154842  0.224212  0.513301
2019-12-04  1.234087  1.462279  1.102835 -0.498354 -2.438021
2019-12-05  0.111522  0.265316 -0.605126 -0.106813  0.672281
"""

# 刪除指定列
df.drop(df.columns[[2,4]], axis=1, inplace=False) # 刪除3、5列
"""
                   A         B         D
2019-12-01 -0.400561  1.916244  1.726683
2019-12-02 -0.400561  1.916244 -2.341047
2019-12-03  1.165244 -0.489673  0.360694
2019-12-04 -0.339122  0.169905 -0.303687
2019-12-05  0.752542  0.989045 -0.034715
"""

df.drop(df.index[[2,4]], axis=0, inplace=False)  # 刪除3、5行
"""
                   A         B         C         D         E
2019-12-01 -0.400561  1.916244 -0.027848  1.726683 -0.825451
2019-12-02 -0.400561  1.916244 -0.341435 -2.341047 -2.216682
2019-12-04 -0.339122  0.169905 -0.970991 -0.303687  1.663149
"""

# 去重(去除重複)

# 以A、B列匹配去重、保留第一行
df.drop_duplicates(subset=['A','B'],keep='first',inplace=False) 
"""
                   A         B         C         D         E
2019-12-01 -0.400561  1.916244 -0.027848  1.726683 -0.825451
2019-12-03  1.165244 -0.489673 -0.479814  0.360694  1.670459
2019-12-04 -0.339122  0.169905 -0.970991 -0.303687  1.663149
2019-12-05  0.752542  0.989045  0.724454 -0.034715  1.240655
"""

# 以A、B列匹配去重、保留最後一行
df.drop_duplicates(subset=['A','B'],keep='last',inplace=False)
"""
                   A         B         C         D         E
2019-12-02 -0.400561  1.916244 -0.341435 -2.341047 -2.216682
2019-12-03  1.165244 -0.489673 -0.479814  0.360694  1.670459
2019-12-04 -0.339122  0.169905 -0.970991 -0.303687  1.663149
2019-12-05  0.752542  0.989045  0.724454 -0.034715  1.240655
"""


# 時間戳轉換爲時間
df = pd.DataFrame([i for i in range(1551871800,1551871805)],columns=['時間'])
"""
           時間
0  1551871800
1  1551871801
2  1551871802
3  1551871803
4  1551871804
"""

pd.to_datetime(df['時間'], unit='s', origin=pd.Timestamp('1970-01-01'))  # 時間戳轉換爲時間一
df['時間'].map(lambda x: datetime.datetime.fromtimestamp(x))  # 時間戳轉換爲時間二
"""
# unit='s' 代表單位是秒,origin 代表從這個時間開始加上時間戳的那麼多秒
0   2019-03-06 11:30:00
1   2019-03-06 11:30:01
2   2019-03-06 11:30:02
3   2019-03-06 11:30:03
4   2019-03-06 11:30:04
"""


# 讀取數據
# read_excel 方法的部分參數
"""
header:指定作爲列名的行,默認0,即取第一行的值爲列名。數據爲列名行以下的數據;若數據不含列名,則設定 header = None。

names:默認爲None,要使用的列名列表,如不包含標題行,應顯示傳遞header=None。

index_col:指定列爲索引列,默認None列(0索引)用作DataFrame的行標籤。

usecols:int或list,默認爲None。

dtype:列的類型名稱或字典,默認爲None。數據或列的數據類型。例如{'a':np.float64,'b':np.int32}使用對象保存存儲在Excel中的數據而不解釋dtype。如果指定了轉換器,則它們將應用於dtype轉換的INSTEAD。

skiprows:省略指定行數的數據,從第一行開始。例如:skiprows=1 則省略第一行從第二行開始

skipfooter:省略指定行數的數據,從尾部數的行開始。

dtype:字典類型{'列名1':數據類型,‘列名’:數據類型},設定指定列的數據類型。
"""



# 保存數據
# to_csv方法的部分參數
"""
path_or_buf:字符串或文件句柄,默認爲無
文件路徑或對象,如果提供None,則結果以字符串形式返回。

sep:字符,默認爲“,”
輸出文件的字段定界符。

na_rep:字符串,默認''
缺少數據表示

float_format:字符串,默認爲無
浮點數格式字符串

header:布爾值或字符串列表,默認爲True
寫出列名。如果給出了字符串列表,則假定它是列名的別名

index:布爾值,默認爲True
寫行名(索引)

mode:str
Python寫入模式,默認爲“ w”

encoding:字符串,可選
一個字符串,代表要在輸出文件中使用的編碼,在Python 2上默認爲'ascii',在Python 3上默認爲'utf-8'。

compression:字符串,可選
表示要在輸出文件中使用的壓縮的字符串,允許的值爲'gzip','bz2',僅當第一個參數是文件名時使用

line_terminator:字符串,默認爲'n'
在輸出文件中使用的換行符或字符序列

chunksize:int或無
一次寫入的行

date_format:字符串,默認爲None
日期時間對象的格式字符串

"""

df.to_excel('a.xlsx',index=False)
df.to_csv('a.csv',index=False,encoding='utf-8_sig')  # encoding防止中文亂碼

# 讀取數據
df = pd.read_excel('a.xlsx')
df = pd.read_csv('a.csv', encoding='utf-8_sig', engine='python')

 

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