Python | Pandas

2022-06-21  本文已影响0人  shwzhao

还没整理好,再慢慢搞吧。


资源

利用 Python 进行数据分析 · 第 2 版
Pandas进阶修炼120题


import pandas as pd

1. 读取写出

1.1 数据读取

可以读取的数据文件格式有很多,二进制、json、HDF5......
我需要掌握的只是读取 .fa 之类的普通文本格式和.csv.tsv 之类的数据框格式。

>>> df = pd.read_csv("mpg.tsv", sep="\t", header=0, usecols=[0,1,5,4,3,2], names=["Manu","Model","Displ","Year","Cyl","Trans"])
>>> df
           Manu   Model  Displ  Year  Cyl       Trans
0          audi      a4    1.8  1999    4    auto(l5)
1          audi      a4    1.8  1999    4  manual(m5)
2          audi      a4    2.0  2008    4  manual(m6)
3          audi      a4    2.0  2008    4    auto(av)
4          audi      a4    2.8  1999    6    auto(l5)
..          ...     ...    ...   ...  ...         ...
229  volkswagen  passat    2.0  2008    4    auto(s6)
230  volkswagen  passat    2.0  2008    4  manual(m6)
231  volkswagen  passat    2.8  1999    6    auto(l5)
232  volkswagen  passat    2.8  1999    6  manual(m5)
233  volkswagen  passat    3.6  2008    6    auto(s6)

[234 rows x 6 columns]
df = pd.read_excel("team.xlsx")
1.2 数据写出
pd.to_scv('')

2. 索引

3. 查看数据

>>> df.dtypes
Manu      object
Model     object
Displ    float64
Year       int64
Cyl        int64
Trans     object
dtype: object
>>> df.head()
   Manu Model  Displ  Year  Cyl       Trans
0  audi    a4    1.8  1999    4    auto(l5)
1  audi    a4    1.8  1999    4  manual(m5)
2  audi    a4    2.0  2008    4  manual(m6)
3  audi    a4    2.0  2008    4    auto(av)
4  audi    a4    2.8  1999    6    auto(l5)
>>> df.sample()
       Manu        Model  Displ  Year  Cyl     Trans
178  toyota  4runner 4wd    4.7  2008    8  auto(l5)
>>> df.shape
(234, 6)
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 234 entries, 0 to 233
Data columns (total 6 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   Manu    234 non-null    object
 1   Model   234 non-null    object
 2   Displ   234 non-null    float64
 3   Year    234 non-null    int64
 4   Cyl     234 non-null    int64
 5   Trans   234 non-null    object
dtypes: float64(1), int64(2), object(3)
memory usage: 11.1+ KB
>>> df.describe()
            Displ         Year         Cyl
count  234.000000   234.000000  234.000000
mean     3.471795  2003.500000    5.888889
std      1.291959     4.509646    1.611534
min      1.600000  1999.000000    4.000000
25%      2.400000  1999.000000    4.000000
50%      3.300000  2003.500000    6.000000
75%      4.600000  2008.000000    8.000000
max      7.000000  2008.000000    8.000000
>>> df.mean()
Displ       3.471795
Year     2003.500000
Cyl         5.888889
dtype: float64

4. 数据筛选

4.1 行
>>> df.iloc[1]
Manu           audi
Model            a4
Displ           1.8
Year           1999
Cyl               4
Trans    manual(m5)
Name: 1, dtype: object  
>>> df.iloc[[1,3,5]]
   Manu Model  Displ  Year  Cyl       Trans
1  audi    a4    1.8  1999    4  manual(m5)
3  audi    a4    2.0  2008    4    auto(av)
5  audi    a4    2.8  1999    6  manual(m5)
>>> df[3:5]
   Manu Model  Displ  Year  Cyl     Trans
3  audi    a4    2.0  2008    4  auto(av)
4  audi    a4    2.8  1999    6  auto(l5)
4.2 列
df['Manu']
df[['Maun', 'Model']]
>>> df.Manu
0            audi
1            audi
2            audi
3            audi
4            audi
          ...
229    volkswagen
230    volkswagen
231    volkswagen
232    volkswagen
233    volkswagen
Name: Manu, Length: 234, dtype: object
4.3 行和列
>>> df.iloc[1,3]
1999
>>> df.loc[1,"Model"]
'a4'
>>> df.loc[14:17, ['Trans', 'Year']]
         Trans  Year
14  manual(m6)  2008
15    auto(l5)  1999
16    auto(s6)  2008
17    auto(s6)  2008
[234 rows x 6 columns]
>>> df.iloc[14:17, [5,3]]
         Trans  Year
14  manual(m6)  2008
15    auto(l5)  1999
16    auto(s6)  2008

注意df.loc[]df.iloc[]的14:17的结果是不一样的

4.4 条件
>>> df[df.Model == "a4"] # 按表达式筛选行
   Manu Model  Displ  Year  Cyl       Trans
0  audi    a4    1.8  1999    4    auto(l5)
1  audi    a4    1.8  1999    4  manual(m5)
2  audi    a4    2.0  2008    4  manual(m6)
3  audi    a4    2.0  2008    4    auto(av)
4  audi    a4    2.8  1999    6    auto(l5)
5  audi    a4    2.8  1999    6  manual(m5)
6  audi    a4    3.1  2008    6    auto(av)
4.5 高级过滤

5. 添加修改

5.1 增加列
frame['new_col']
5.2 增加行
5.3 合并
5.4 修改
5.5 比对

``

5.6 排序
5.7 删除
>>> df = pd.DataFrame({'A':list('abce'), 'B':range(4)})
>>> df
   A  B
0  a  0
1  b  1
2  c  2
3  e  3
>>> df.drop([0, 1]) # 删除指定行
   A  B
2  c  2
3  e  3
>>> df.drop('A', axis=1) # 删除指定列
   B
0  0
1  1
2  2
3  3

6. 文本处理

6.1 文本处理

这块与 Python 自带的字符串方法非常相似

6.2 文本高级处理

7. 分组聚合

按标签分组
表达式
函数分组
多种方法混合
df.pipe()

8. 结构转换

因子化

9. 数据迭代

10. 函数应用

上一篇 下一篇

猜你喜欢

热点阅读