1.认识pandas+一些基础
2.使用pandas读取保存文件的一些操作
import pandas as pd
df=pd.read_csv('03.csv')
df
监测时间 | O3监测浓度(μg/m³) | |
---|---|---|
0 | 2019-04-16 | 103.125000 |
1 | 2019-04-17 | 205.750000 |
2 | 2019-04-18 | 83.250000 |
3 | 2019-04-19 | 70.625000 |
4 | 2019-04-20 | 32.250000 |
... | ... | ... |
814 | 2021-07-08 | 87.375000 |
815 | 2021-07-09 | 146.375000 |
816 | 2021-07-10 | 80.750000 |
817 | 2021-07-11 | 63.000000 |
818 | 2021-07-12 | 81.142857 |
819 rows × 2 columns
df.监测时间
0 2019-04-16 1 2019-04-17 2 2019-04-18 3 2019-04-19 4 2019-04-20 ... 814 2021-07-08 815 2021-07-09 816 2021-07-10 817 2021-07-11 818 2021-07-12 Name: 监测时间, Length: 819, dtype: object
df.O3监测浓度(μg/m³)
File "<ipython-input-31-44a9a3a178a4>", line 1 df.O3监测浓度(μg/m³) ^ SyntaxError: invalid character in identifier
由上,说明了
df.列名的一些弊端
而且,有可能会被df本身自带的属性名字或者方法影响
所以,我建议采用以下方法
df['O3监测浓度(μg/m³)']
0 103.125000 1 205.750000 2 83.250000 3 70.625000 4 32.250000 ... 814 87.375000 815 146.375000 816 80.750000 817 63.000000 818 81.142857 Name: O3监测浓度(μg/m³), Length: 819, dtype: float64
df1=pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df1
A | B | |
---|---|---|
0 | 1 | 4 |
1 | 2 | 5 |
2 | 3 | 6 |
df1.rename(columns={"A": "a", "B": "c"})
df1.rename(index={0: "x", 1: "y", 2: "z"})
A | B | |
---|---|---|
x | 1 | 4 |
y | 2 | 5 |
z | 3 | 6 |
简单粗暴的
df1.columns=['A','B']
df1.index=list('xyz')
df1
A | B | |
---|---|---|
x | 1 | 4 |
y | 2 | 5 |
z | 3 | 6 |
我个人喜好用俩个选择器,但是学校这边是用的at
所以我都介绍一下,不要介意
首先是iloc索引,对应的第一个是第几行,然后再是第几列
df.iloc[0,1]
100.0
df.iloc[0,1]=100
df
监测时间 | O3监测浓度(μg/m³) | |
---|---|---|
0 | 2019-04-16 | 100.000000 |
1 | 2019-04-17 | 205.750000 |
2 | 2019-04-18 | 83.250000 |
3 | 2019-04-19 | 70.625000 |
4 | 2019-04-20 | 32.250000 |
... | ... | ... |
814 | 2021-07-08 | 87.375000 |
815 | 2021-07-09 | 146.375000 |
816 | 2021-07-10 | 80.750000 |
817 | 2021-07-11 | 63.000000 |
818 | 2021-07-12 | 81.142857 |
819 rows × 2 columns
然后是loc。显示索引,比如这样子
df.index=df['监测时间']
df
监测时间 | O3监测浓度(μg/m³) | |
---|---|---|
监测时间 | ||
2019-04-16 | 2019-04-16 | 100.000000 |
2019-04-17 | 2019-04-17 | 205.750000 |
2019-04-18 | 2019-04-18 | 83.250000 |
2019-04-19 | 2019-04-19 | 70.625000 |
2019-04-20 | 2019-04-20 | 32.250000 |
... | ... | ... |
2021-07-08 | 2021-07-08 | 87.375000 |
2021-07-09 | 2021-07-09 | 146.375000 |
2021-07-10 | 2021-07-10 | 80.750000 |
2021-07-11 | 2021-07-11 | 63.000000 |
2021-07-12 | 2021-07-12 | 81.142857 |
819 rows × 2 columns
df.loc['2021-07-12','O3监测浓度(μg/m³)']
81.14285714285714
df.loc['2021-07-12','O3监测浓度(μg/m³)']=81
然后我们来看学校的
at 函数:通过行名和列名来取值(取行名为a, 列名为A的值)
iat 函数:通过行号和列号来取值(取第1行,第1列的值)
df
监测时间 | O3监测浓度(μg/m³) | |
---|---|---|
监测时间 | ||
2019-04-16 | 2019-04-16 | 100.000 |
2019-04-17 | 2019-04-17 | 205.750 |
2019-04-18 | 2019-04-18 | 83.250 |
2019-04-19 | 2019-04-19 | 70.625 |
2019-04-20 | 2019-04-20 | 32.250 |
... | ... | ... |
2021-07-08 | 2021-07-08 | 87.375 |
2021-07-09 | 2021-07-09 | 146.375 |
2021-07-10 | 2021-07-10 | 80.750 |
2021-07-11 | 2021-07-11 | 63.000 |
2021-07-12 | 2021-07-12 | 81.000 |
819 rows × 2 columns
df.at['2019-04-18', 'O3监测浓度(μg/m³)']
83.25
df.at['2019-04-18', 'O3监测浓度(μg/m³)']=83
iat也是一样的用法,基本上跟iloc和loc差不多,
但是他有一个致命的缺点就是只能选择一个值
没有像iloc和loc那么,跟玩隐式切片和显示切片似的,可以取多个!