python-13-pandas的常用操作

it2024-08-10  36

(1)获取数据 (2)数据处理:处理缺失数据,可视化 (3)特征工程 (4)算法训练:模型 (5)模型评估 (6)应用 from numpy import nan as NA

1 分析数据

df[“method”]获取指定列 df.iloc[0]获取第一行的数据 df.iloc[0][“code”]获取第一行指定列的数据 df.shape()获取行数和列数

1 滤除缺失数据

SeriesNew = Series.dropna() SeriesNew = Series[Series.notnull()] DataFrameNew = DataFrame.dropna()删除含NA的行 DataFrameNew = DataFrame.dropna(how="all")删除全为NA的行 DataFrameNew = DataFrame.dropna(axis=1,how="all")删除全为NA的列 DataFrameNew = DataFrame.dropna(axis=1)删除含NA的列 DataFrameNew = DataFrame.dropna(thresh=n)保留至少有n个非NA的行

注意:(1)DataFrame.dropna()这个操作将删除任何至少有一个空值的行,但是它将返回一个新的DataFrame,而不更改原来的数据,更改原数据可以在这个方法中指定inplace=True。

2 填充缺失数据

DataFrameNew = DataFrame.fillna(num) DataFrameNew = DataFrame.fillna({1:0.5,2:7.3})填充指定列 DataFrame.fillna(0,inplace=True)就地修改 SeriesNew = Series.fillna(Series.mean())传入Series的平均值

3 移出重复数据

Series = DataFrame.duplicated()布尔型Series,各行是否是重复行 DataFrameNew = DataFrame.drop_duplicates() DataFrameNew = DataFrame.drop_duplicates(['k1'])根据k1列过滤重复项 DataFrameNew = DataFrame.drop_duplicates(['k1','k2'])保留最后一个 SeriesNew = Series.map(字典) SeriesNew = Series.str.lower()大写转小写 SeriesNew = Series.map(lambda x:f(x))

4 替换值

SeriesNew = Series.replace(-999,np.nan) Series.replace(-999,np.nan,inplace=True)就地修改 SeriesNew = Series.replace([-999,-1000],np.nan) SeriesNew = Series.replace([-999,-1000],[np.nan,0]) SeriesNew = Series.replace({-999:np.nan,-1000:0})

5 重命名轴索引

DataFrame.index = DataFrame.index.map(函数)就地修改 DataFrameNew = DataFrame.rename() s.value_counts()计数

6 图

fig = plt.figure() ax1 = fig.add_subplot(2,2,1) ax2 = fig.add_subplot(2,2,2) fig,axes = plt.subplot(2,2,sharex=True,sharey=True) axes[0,0][1,0] axes[0,1][1,1] plt.subplots_adjust(wspace=0,hspace=0)调整子图间距 ax.plot(x,y,‘g–’)颜色线型 ax.plot(x,y,linstyle=’–’,color=‘g’)颜色线型

ax.set_xticks([0,250,500])刻度位置 ax.set_xticklables([“one”,“two”,“three”])刻度标签

ax.set_title(“标题”)标题 ax.set_xlabel(“名称”)x轴的名称

ax.plot(x,y,label=‘one’)图例配合label参数使用 ax.legend(loc=“best”)

ax.text()注解 ax.arrow() ax.annotate()

plt.savefig()保存

Series.plot() DataFrame.plot() sns.barplot()柱状图 sns.distplot()直方图和密度图 sns.displot(a,bins=None,hist=True,kde=True,rug=False,fit=None) sns.regplot()散点图和回归图 sns.pairplot()散点图矩阵,且对角线为直方图或密度图 sns.factorplot() pd.merge()

7 分组

df.groupby(‘key’) df.groupby([‘key1’,‘key2’]) df.groupby().size()

8 字符串

str.split(’,’)拆分成列表 str.strip()去除空白符(包括换行符) substr in str 子串定位 str.index(’,’)找不到会抛异常 str.find(’:’) str.count(substr)子串出现次数 str.replace(被替,填充) re.split(’\s+’,str)按一个或多个空白符(制表符、空格、换行符),拆分成列表

regex = re.compile(正则表达式) regex.findall(str)返回列表 regex.search(str)起始和结束位置 regex.sub(替换物,str)返回新的字符串

9 使用

DataFrame.query(“a>2”)对数据框进行挑选行的操作 (1)时间戳转换为日期时间 时间戳单位秒 pd.to_datetime() (2)日期时间转变为日期时间索引 pd.DatetimeIndex() (3)是否包含在其中 Series.isin()

最新回复(0)