一、读取数据
1.在同一项目下,可以用:".\XXX"
data=pd.read_csv(“.\XXX.dat,header=None”)#表示无表头
2.pandas直接读取数据之后为DataFrame类型(data)
只要列数一样就可以调用
data.columns=['XXX','XXX']
二、使代码写起来简单的计算方法
1.shape:可以利用这个函数进行数据的便利,返回值位长度(整数数值)就不用len(XX)了
data.shape[0]#表示第一维的长度,也就是行数,.shape[0]表示有多少行
data.shape[1]#表示第二维的长度,也就是列数,.shape[1]表示有多少列
2.DateFrame类型的迷点
data.iloc[X:Y,x:y]#逗号前表示行的范围,逗号后表示列的范围:且左闭右开
data.apply(np.mean,axis =0)#axis =0,列,axis =1行取平均值
data[x][y]#x表示列,x表示第几行
type(data["Buying"])#pandas.core.series.Series
type(data[["Buying"]])# pandas.core.frame.DataFrame
type(data_test.iloc[:,6])# pandas.core.series.Series
type(data_test.loc[:, "label"].values)#numpy.ndarray
dates = pd.date_range('20130101', periods=6)#时间索引
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))#DataFrame类型数据
print(df.loc[dates[0]])
3.apply函数——>apply+lambad
我来画个瓢:
type(data_test["label"].apply(lambda x:1 if x=="vgood" else 0))
Out[4]: pandas.core.series.Series
type(data_test["label"])
Out[5]: pandas.core.series.Series
注意:要把它赋值给原来的数据才会改变大的DataFrame类型,虽然pycharm给我警告,但还是改过来了。有病病。。。
以下是警告:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead意思是:
设置带复制警告:
A value is trying to be set on a copy of a slice from a DataFrame.
试图在数据帧的切片副本上设置值。
Try using .loc[row_indexer,col_indexer] = value instead
请尝试改用.loc[row\u indexer,col\u indexer]=value
好吧,貌似是有点不符合规范,按照他的改
loc[行,列名]//iloc[行,列]
data_test.loc[:,"label"]=data_test.loc[:,"label"].apply(lambda x:1 if x=="vgood" else 0)
以下是葫芦:
def bin_age(age):
if age >=18:
return 1
else:
return 0
df1['age'].apply(bin_age)
二分类判断:
df1['age'].apply(lambda x : 1 if x >18 else 0)
三、注意事项:
在if __name__='__name__':之下调用的函数必须在他上面才会被识别