基于pandas的CSV文件基本操作及DataFrame结构理解2018-12-23

以泰坦尼克号生还概率预测的训练集作为演示

首先在开头导入pandas库


import pandas as pd

在pandas中 可以通过read_csv()函数读取csv文件


test = pd.read_csv("./test.csv")#文件路径

随后我们打印看一下


print(test)


    PassengerId  Pclass  ...              Cabin Embarked

0            892      3  ...                NaN        Q

1            893      3  ...                NaN        S

2            894      2  ...                NaN        Q

3            895      3  ...                NaN        S

4            896      3  ...                NaN        S

5            897      3  ...                NaN        S

6            898      3  ...                NaN        Q

7            899      2  ...                NaN        S

8            900      3  ...                NaN        C

9            901      3  ...                NaN        S

10          902      3  ...                NaN        S

11          903      1  ...                NaN        S

12          904      1  ...                B45        S

13          905      2  ...                NaN        S

14          906      1  ...                E31        S

15          907      2  ...                NaN        C

16          908      2  ...                NaN        Q

17          909      3  ...                NaN        C

18          910      3  ...                NaN        S

19          911      3  ...                NaN        C

20          912      1  ...                NaN        C

21          913      3  ...                NaN        S

22          914      1  ...                NaN        S

23          915      1  ...                NaN        C

24          916      1  ...    B57 B59 B63 B66        C

25          917      3  ...                NaN        S

26          918      1  ...                B36        C

27          919      3  ...                NaN        C

28          920      1  ...                A21        S

29          921      3  ...                NaN        C

..          ...    ...  ...                ...      ...

388        1280      3  ...                NaN        Q

389        1281      3  ...                NaN        S

390        1282      1  ...                B24        S

391        1283      1  ...                D28        S

392        1284      3  ...                NaN        S

393        1285      2  ...                NaN        S

394        1286      3  ...                NaN        S

395        1287      1  ...                C31        S

396        1288      3  ...                NaN        Q

397        1289      1  ...                B41        C

398        1290      3  ...                NaN        S

399        1291      3  ...                NaN        Q

400        1292      1  ...                  C7        S

401        1293      2  ...                NaN        S

402        1294      1  ...                NaN        C

403        1295      1  ...                NaN        S

404        1296      1  ...                D40        C

405        1297      2  ...                D38        C

406        1298      2  ...                NaN        S

407        1299      1  ...                C80        C

408        1300      3  ...                NaN        Q

409        1301      3  ...                NaN        S

410        1302      3  ...                NaN        Q

411        1303      1  ...                C78        Q

412        1304      3  ...                NaN        S

413        1305      3  ...                NaN        S

414        1306      1  ...                C105        C

415        1307      3  ...                NaN        S

416        1308      3  ...                NaN        S

417        1309      3  ...                NaN        C

[418 rows x 11 columns]

我们需要展示的比较完全,所以需要去掉省略号,并且不需要这么多行数据

在开头使用set_option()函数读取csv文件


pd.set_option('max_columns',200)

这个函数的用法是pandas.set_option(pat, value)

官方文档

常用的大概有:max_columns设置最大列数;max_rows设置最大行数;max_colwidth设置一格中最大字符数

然后使用DataFrame.head()获取前几行内容,然后打印一下。

不过需要注意,head()函数实际上类似于一个引用,如果想在修改t5时不影响test,需要使用DataFrame.copy()。

另外如果不使用copy()的话,可能会出现A value is trying to be set on a copy of a slice from a DataFrame错误。


#t5 = test.head(5)

t5 = test.head(5).copy()

print(t5)


  PassengerId  Pclass                                          Name  0  \

0          892      3                              Kelly, Mr. James  1 

1          893      3              Wilkes, Mrs. James (Ellen Needs)  1 

2          894      2                    Myles, Mr. Thomas Francis  1 

3          895      3                              Wirz, Mr. Albert  1 

4          896      3  Hirvonen, Mrs. Alexander (Helga E Lindqvist)  1 

      Sex  Age  SibSp  Parch  Ticket    Fare Cabin Embarked 

0    male  34.5      0      0  330911  7.8292  NaN        Q 

1  female  47.0      1      0  363272  7.0000  NaN        S 

2    male  62.0      0      0  240276  9.6875  NaN        Q 

3    male  27.0      0      0  315154  8.6625  NaN        S 

4  female  22.0      1      1  3101298  12.2875  NaN        S 

我们看一下上面的打印数据,也许是因为太长了,有了个续行的反斜杠,不过这个影响不大。但是相比之下,可以发现少了最后显示行数和列数的语句

我仍然想知道行列数,所以可以使用DataFrame.shape获取他的大小,或者直译形状也可以


print(t5.shape)


(5, 11)

接下来我们尝试一下添加和删除列

插入列的语法是DataFrame.insert(loc, column, value[, …]),loc是插入的位置,column是列名,value既可以一个值也可以是一个列表,如果value是一个值,该列全部为value,如果value是一个列表,那么这个列表必须和DataFrame的行数相同,该列会由value中的值依次填充

或者也可以使用插入列的语法是DataFrame[column] = value[, …]的形式在末尾添加。此外还有concat(),reindex()等

删除可以用drop(),并不修改原数据,而是返回一个修改后的数据,既可以删除列也可以删除行,DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')。labels即要删除的行列名,和axis一起起作用,同时删除多个时用列表。或者也可以使用index和columns直接指定要删除的行列

t5.loc[row] = value[, …]可以在最后添加一行,不过对于行的修改需求通常较少


t5['Pclasssssss'] = t5.Pclass

t5 = t5.drop('Pclass',axis=1)

print(t5)


  PassengerId                                          Name    Sex  Age  \

0          892                              Kelly, Mr. James    male  34.5 

1          893              Wilkes, Mrs. James (Ellen Needs)  female  47.0 

2          894                    Myles, Mr. Thomas Francis    male  62.0 

3          895                              Wirz, Mr. Albert    male  27.0 

4          896  Hirvonen, Mrs. Alexander (Helga E Lindqvist)  female  22.0 

  SibSp  Parch  Ticket    Fare Cabin Embarked  Pclasssssss 

0      0      0  330911  7.8292  NaN        Q            3 

1      1      0  363272  7.0000  NaN        S            3 

2      0      0  240276  9.6875  NaN        Q            2 

3      0      0  315154  8.6625  NaN        S            3 

4      1      1  3101298  12.2875  NaN        S            3 

有趣的是


t5.PassengerId += 100

可以运行

你可能感兴趣的:(基于pandas的CSV文件基本操作及DataFrame结构理解2018-12-23)