700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python的数据科学函数包(二)——pandas(series dataframe)(loc iloc ix)(csv文件)

Python的数据科学函数包(二)——pandas(series dataframe)(loc iloc ix)(csv文件)

时间:2018-08-09 20:27:10

相关推荐

Python的数据科学函数包(二)——pandas(series  dataframe)(loc  iloc  ix)(csv文件)

pandas

1、pandas数据的存储相对来说比较简单,它就只有两种非常重要的数据类型,一种叫series,一种叫dataframe

series是指那些一维的数据,dataframe是指那些二维的数据。也就是说任何一个datafarame其实是好多个series罗列出来的

2、读取csv数据

不只可以用来读excel,如果普通的文件想读成列形式的也可以用它

train_df = pd.read_csv('train.csv')train_df.head()

默认是header=0,0,ji 表示第一行为标题行

header=None,即指明原始文件数据没有列索引,这样read_csv会自动加上列索引,除非你给定列索引的名字

例如,这是数据集

当train = pd.read_csv(train_path),train是

此时,train[0]就是第一列,train[1]就是第2列

当train = pd.read_csv(train_path, header=0),train是

train = pd.read_csv(train_path,header=None), train是

还可以在pd.read_csv()的时候,规定列名

train = pd.read_csv(train_path,names=COLUMN_NAMES,header=0)

COLUMN_NAMES = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']train = pd.read_csv(train_path,names=COLUMN_NAMES,header=0)

当header=0表示第一行为标题行,又规定了names的时候,标题行就被覆盖了

head()

.head()

会直接输出数据(默认是前5行)

print(X.head()) 和 print(X)的结果是一样的

3. 查看csv数据大小

train_df.shape

4. 读取csv数据转为numpy 数组

import pandas as pdtrain = pd.read_csv('train.csv')train = train.values.tolist()

5、pd.Series(data,index)

pd.DataFrame(data,index,columns)

6、做数据科学的时候,往往把feature放在列上,每一列叫做一个feature

每一行叫做一个observation

像不同的列记录所有人的身高、所有人的体重,所有人的收入,而每一行是一个不同的人

并且如果直接引用的话,会默认选择列

若要选择行 df.loc('A')

7. 行列选取

①行(列)选取:df[]。

单维度选取,这种情况一次只能选取行或者列

iris数据集

选取行

#选取0-10行df = pd.read_csv('dataset/iris.data', header=None)y = df[0:10]print(y)#选取第3行y = df[3:4]print(y)

注意如果写作y = df[3],这是在选第3列

选取列

#选取3列df = pd.read_csv('dataset/iris.data', header=None)y = df[3]print(y)#选取第2列,第4列y = df[[2,4]]print(y)#没法一次选取多个列

②区域选取(多维选取):df.loc[],df.iloc[],df.ix[]。

这种方式可以同时为多个维度设置筛选条件。

pandas以类似字典的方式来获取某一列的值,比如df[‘A’],这会得到df的A列。如果我们对某一行感兴趣呢?这个时候有两种方法,一种是iloc方法,另一种方法是loc方法。loc是指location的意思,iloc中的i是指integer

loc是根据index来索引,比如下边的df定义了一个index,那么loc就根据这个index来索引对应的行。

iloc并不是根据index来索引,而是根据行号来索引,行号从0开始,逐次加1。

8、添加列

直接用名称赋值即可

删除列df.drop('new',axis)

axis=0是指行, axis=1是指列的维度

但是这样删除只是返回一个临时的结果,实际df中并没有删除列,这是相当于一个double check的机制。可以不在原数据进行操作,df2=df.drop('new',axis)

如果的确要删的话df.drop('new',axis=1,inplace= True)

9、选择满足相关条件的数据

选择W列的值大于0的数据

选择W列的值大于0的数据的Y的数据

选择W列的值大于0并且Y列的值大于1的数据

10、将另一列的数据当做行名

df.set_index('state')

同样,如果确定要修改,还需要df.set_index('state',inplace=True)

11、将数据转化成DataFrame

12、分组计算

平均值

最大值

标准差 //standard deviation

能计算的都给你计算一遍

13、解决dataframe输出省略号的问题

pd.set_option('display.max_rows',1000) # 具体的行数或列数可自行设置pd.set_option('display.max_columns',1000)

14.unique() 查看某列不同值的个数

查看多少张图片有标注

print(train_df['image_id'].unique())

15. value_counts() 统计某列不同值分别有几个

在pandas中,value_counts常用于数据表的计数及排序,它可以用来查看数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,同时还能根据需要进行排序。

print(train_df['image_id'].value_counts())

画pandas的值的图要用sns.plot()

16. apply()

pandas 的apply()函数可以作用于Series或者整个DataFrame

功能是自动遍历整个Series或者DataFrame, 对每一个元素运行指定的函数。

17. 拆分某一列为好几列

series内置函数str.split

train_df[['x','y','w','h']] = train_df['bbox'].str[1:-1].str.split(',', expand=True).astype(np.float)

18. str转int

data[['m']] = data[['m']].astype(int)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。