异常值处理
缺失数据在大部分数据分析应用中都很常见,Pandas的设计目标之一就是让缺失数据的处理任务尽量轻松 Pandas使用浮点值NaN(Not a umber)表示浮点和非浮点数组中的缺失数据 Pandas提供了专门的处理缺失数据的函数:
import pandas as pd import numpy as np data = pd.Series(["a", np.nan, "c", "d"]) print(data.isnull()) #判断是否为空对象 data = pd.Series([1, np.nan, 3, np.nan, 7]) print(data.dropna()) #滤掉缺失数据 #通过布尔值索引滤除数据 print(data[data.notnull()]) data = pd.DataFrame([[1, 6, 5], [2, np.nan, np.nan]]) #滤除DataFrame中的缺失数据 print(data.dropna()) print(data.dropna(axis=1))
时间处理
时间序列数据是一种重要的结构化数据形式。
在Python语言中,主要使用datatime模块来处理时间:
datetime对象间的减法运算会得到一个timedelta对象,timedelta对象代表两个时间之间的时间差。
datetime对象与它所保存的字符串格式时间戳之间可以互相转换。
在Pandas中,主要使用从Series派生出来的子类TimeStamp:
最基本的时间序列类型就是以时间戳(TimeStamp)为index元素的Series类型。
时间序列只是index比较特殊的Series,因此一般的索引操作对时间序列依然有效。
时间序列只是index比较特殊的Series,因此一般的索引操作对时间序列依然有效。
import datetime as datetime import pandas as pd import numpy as np print(pd.to_datetime(datetime.datetime.now())) print(pd.to_datetime(np.nan)) dates = [datetime.datetime(2022,1,1), datetime.datetime(2022,1,2), datetime.datetime(2022,1,3)] ts = pd.Series(np.random.rand(3), index=dates) print(ts)
时间处理
import pandas as pd print(pd.date_range("20220101", "20220108")) print(pd.date_range(start="20220101", periods=8)) print(pd.date_range(end="20220108", periods=8)) print(pd.date_range("20220101", "20220501", freq="M")) print(pd.date_range('20221018', '2022-10-25')) print(pd.date_range('2022/10/18', '2022-10-25')) print(pd.date_range('2022/10/21', '2022-10-22', freq="4H"))
文件读写
常见的文件读写有3种,
分别是一般文本文件、 CSV文件Excel文件,
Pandas提供了便利的CSV和Excel文件读写方式:
使用to_csv()函数将DataFrame对象写入到CSV文件。
使用read_csv()函数读取CSV文件。
使用to_excel()函数将DataFrame对象写入到CSV文件。
使用read_excel()函数读取CSV文件。
import pandas as pd import os df_write = pd.DataFrame({"name": ["Alice", "Mary", "Anna"], "age": ["23", "34", "28"]}) root_path = os.getcwd() file_with_path = os.path.join(root_path, 'test.csv') df_write.to_csv(file_with_path, index=False) df_read = pd.read_csv(file_with_path) print(df_read)