1. 程式人生 > 實用技巧 >pandas組隊學習:task2

pandas組隊學習:task2

一、檔案讀取和寫入

1. 檔案讀取

  • csv:pd.read_csv(filename)

  • txt :pd.read_table(filename)

  • excle:pd.read_excel(filename)

    示例:

import pandas as pd
df_csv = pd.read_csv('my_csv.csv')

Out[6]: 
   col1 col2  col3    col4      col5
0     2    a   1.4   apple  2020/1/1
1     3    b   3.4  banana  2020/1/2
2     6    c   2.5  orange  2020/1/5
3     5    d   3.2   lemon  2020/1/7

​ header=None表示第一行不作為列名,例如:

import pandas as pd
df_csv = pd.read_csv('my_csv.csv',header=None)			#原本一共4行,現在變成了5行
Out[9]: 
      0     1     2       3         4
0  col1  col2  col3    col4      col5
1     2     a   1.4   apple  2020/1/1
2     3     b   3.4  banana  2020/1/2
3     6     c   2.5  orange  2020/1/5
4     5     d   3.2   lemon  2020/1/7

usecols表示讀取指定列:(輸入為列的名稱)

import pandas as pd
df_csv = pd.read_csv('my_csv.csv',usecols=['col1'])		#讀取第一列
Out[13]: 
   col1
0     2
1     3
2     6
3     5

nrows表示讀取的行數:(輸入為整數)

import pandas as pd
df_csv = pd.read_csv('my_csv.csv',nrows=2)			#讀取兩行
Out[15]: 
   col1 col2  col3    col4      col5
0     2    a   1.4   apple  2020/1/1
1     3    b   3.4  banana  2020/1/2

2.檔案寫入

  • csv:data.to_csv(path, index = False) index=False表示將索引去除
  • excel:data.to_excel(path, index = False)
  • txt:data.to_csv(path,sep='\t', index=False)

二.基本資料結構

1.series

由四個部分組成,資料:data,索引:index,儲存型別:dtype,名稱:name;例如:

s = pd.Series(data = [1,10,100],index=[1,2,3],name = 'my_series')
Out[20]: 
1      1
2     10
3    100
Name: my_series, dtype: int64

訪問這些屬性可以分別用:資料:s.values,索引:s.index,型別:s.dtype,名稱:s.name訪問;

2.DataFrame

DataFrame在sreies的基礎上,將列進行了擴充套件,由原來的一維變為了二維。

建立方法和sries基本一致,增加列的索引名,例如:

In [33]: df = pd.DataFrame(data = {'col_0': [1,2,3], 'col_1':list('abc'),
   ....:                           'col_2': [1.2, 2.2, 3.2]},
   ....:                   index = ['row_%d'%i for i in range(3)])
   ....: 

In [34]: df
Out[34]: 
       col_0 col_1  col_2
row_0      1     a    1.2
row_1      2     b    2.2
row_2      3     c    3.2

可以按列索引,取出一列或者多列:

In [35]: df['col_0']				#取出某一列
Out[35]: 
row_0    1
row_1    2
row_2    3
Name: col_0, dtype: int64

In [36]: df[['col_0', 'col_1']]			#取出多列
Out[36]: 
       col_0 col_1
row_0      1     a
row_1      2     b
row_2      3     c

三、常見基本函式

1.彙總函式

head函式表示返回表的前n行,tail返回後n行:

In [46]: df.head(2)
Out[46]: 
                          School     Grade            Name  Gender  Height  Weight Transfer
0  Shanghai Jiao Tong University  Freshman    Gaopeng Yang  Female   158.9    46.0        N
1              Peking University  Freshman  Changqiang You    Male   166.5    70.0        N

In [47]: df.tail(3)
Out[47]: 
                            School      Grade            Name  Gender  Height  Weight Transfer
197  Shanghai Jiao Tong University     Senior  Chengqiang Chu  Female   153.9    45.0        N
198  Shanghai Jiao Tong University     Senior   Chengmei Shen    Male   175.3    71.0        N
199            Tsinghua University  Sophomore     Chunpeng Lv    Male   155.7    51.0 

info返回表的資訊概況, describe返回表中數值列對應的主要統計量 :

In [48]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 7 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   School    200 non-null    object 
 1   Grade     200 non-null    object 
 2   Name      200 non-null    object 
 3   Gender    200 non-null    object 
 4   Height    183 non-null    float64
 5   Weight    189 non-null    float64
 6   Transfer  188 non-null    object 
dtypes: float64(2), object(5)
memory usage: 11.1+ KB

In [49]: df.describe()
Out[49]: 
           Height      Weight
count  183.000000  189.000000
mean   163.218033   55.015873
std      8.608879   12.824294
min    145.400000   34.000000
25%    157.150000   46.000000
50%    161.900000   51.000000
75%    167.500000   65.000000
max    193.900000   89.000000

2.統計函式

quantile:返回分位數

In [53]: df_demo.quantile(0.75)
Out[53]: 
Height    167.5
Weight     65.0
Name: 0.75, dtype: float64

count:返回非缺失值個數

In [54]: df_demo.count()
Out[54]: 
Height    183
Weight    189
dtype: int64

idxmax:返回最大值索引

In [55]: df_demo.idxmax() # idxmin是對應的函式
Out[55]: 
Height    193
Weight      2
dtype: int64

3.唯一值函式

主要用來統計表中類別的個數。

  • unique:統計類別的列表

  • nunique:統計類別的數目

  • value_counts:統計不同類別出現的次數

上面這幾個函式只能針對某一列使用,若對多列使用,應該用drop_duplicates函式,相當於是去除重複的值。

對於drop_duplicates函式中的keep引數:keep=first表示保留第一次出現的行,keep=last表示保留最後一次,False表示把重複的全都剔除。

4.替換函式

  • 對映替換:replace
  • 邏輯替換:where和mask; where 函式在傳入條件為 False 的對應行進行替換,而 mask 在傳入條件為 True 的對應行進行替換。
  • 數值替換:round,四捨五入;abs,取絕對值;clip,上下邊界截斷。

5.排序函式

  • 值排序:sort_values,其中ascending引數預設為True升序,false為降序 (按列值排)
  • 索引排序:sort_index,索引用leve表示,排序順序是按字母的順序 (按行值排)

6.apply方法

​ 有點像上一章的map方法,也是通過自定義函式來進行操作

四、視窗物件