4小时学完Python数据分析入门笔记(四) Data Analysis with Python(Numpy, Pandas, Matplotlib, Seaborn)

接上文:4小时学完Python数据分析入门笔记(三)

写在前面

freecodecamp.org + RMOTR的Python数据分析课的笔记,全视频4小时22分钟。以下内容斜体和(括号)部分仅为我个人的想法或补充,其他文字为中文翻译。分几次发完,转载标明出处。
原视频链接:https://www.youtube.com/watch?v=r-uOLxNrNk8
Data Analysis with Python - Full Course for Beginners (Numpy, Pandas, Matplotlib, Seaborn)

本来在开学前复习一遍的目标没有实现,一转眼都快期中了哈哈。今天有空继续,介绍Pandas DataFrame。

Pandas DataFrame

Pandas DataFrame像Excel,Pandas Series像Excel里的一列。Pandas DataFrame其实应该是接触更多的那种。

创建DataFrame

创建方式和创建Pandas Series很像。

df = pd.DataFrame({
    'Population': [35.467, 63.951, 80.94 , 60.665, 127.061, 64.511, 318.523],
    'GDP': [
        1785387,
        2833687,
        3874437,
        2167744,
        4602367,
        2950039,
        17348075
    ],
    'Surface Area': [
        9984670,
        640679,
        357114,
        301336,
        377930,
        242495,
        9525067
    ],
    'HDI': [
        0.913,
        0.888,
        0.916,
        0.873,
        0.891,
        0.907,
        0.915
    ],
    'Continent': [
        'America',
        'Europe',
        'Europe',
        'Europe',
        'Asia',
        'Europe',
        'America'
    ]
}, columns=['Population', 'GDP', 'Surface Area', 'HDI', 'Continent'])
df

修改默认数字index:

df.index = [
    'Canada',
    'France',
    'Germany',
    'Italy',
    'Japan',
    'United Kingdom',
    'United States',
]
df

查看行列等基本信息的代码基本和series是一样的:

df.columns
df.index
df.info() # dataframe结构
df.size
df.shape # 类似2Darray
df.describe()
df.dtypes
df.dtypes.value_counts()
# 这里的输出结果就不一一写了

选择(多)行列&(多)单元格

选择一行有两种方法:按index选择用loc,按位置顺序选择用iloc。

df.loc['France']
df.iloc[1]

Population 63.951
GDP 2833687
Surface Area 640679
HDI 0.888
Continent Europe
Name: France, dtype: object

选择一列直接用该列名称。

df['Population']

Canada 35.467
France 63.951
Germany 80.940
Italy 60.665
Japan 127.061
United Kingdom 64.511
United States 318.523
Name: Population, dtype: float64

注意上面三个返回的值都是Pandas Series

选择多行同样有两种方式:loc和iloc。

df.loc['France': 'Italy']
df.iloc[1:4]
df.iloc[[1,2,3]]

选择多列:

df[['Population', 'GDP']]

选择n行n列:

df.loc['France': 'Italy', ['Population', 'GDP']]
df.iloc[1:4, [0, 1]]
df.iloc[1:4, 0:2]

条件选择需要引入布尔运算。

df['Population'] > 70

Canada False
France False
Germany True
Italy False
Japan True
United Kingdom False
United States True
Name: Population, dtype: bool

df.loc[df['Population'] > 70]

DataFrame运算

加减乘除的基本运算还是和series一样。

df[['Population', 'GDP']] / 100

DataFrame间运算稍微复杂一点点:

先新建一个pandas series

crisis = pd.Series([-1_000_000, -0.3], index=['GDP', 'HDI'])
crisis

再看看我们想要进行运算的dataframe:

df[['GDP', 'HDI']]

最后进行运算:

df[['GDP', 'HDI']] + crisis

DataFrame变换

添加新的一列:

langs = pd.Series(
    ['French', 'German', 'Italian'],
    index=['France', 'Germany', 'Italy'],
    name='Language'
)
df['Language'] = langs
df

我们没有说明一些值,比如Canada对应Language的值,所以右上角的单元格是NaN。

修改一列的值:

df['Language'] = 'English'
df

修改行名:

df.rename(
    columns={
        'HDI': 'Human Development Index',
        'Anual Popcorn Consumption': 'APC'
    }, index={
        'United States': 'USA',
        'United Kingdom': 'UK',
        'Argentina': 'AR' # 我们其实没有这一行但是没关系不会造成问题
    })

统一行名大小写:

df.rename(index=str.upper)
df.rename(index=lambda x: x.lower())

删除行列:

这里要特别注意之前没有指出的一个地方:以下操作都不直接修改df。

df.drop('Canada')
df.drop(['Canada', 'Japan'])
df.drop(columns=['Population', 'HDI'])
df.drop(['Italy', 'Canada'], axis=0) # axis是0代表行
df.drop(['Canada', 'Germany'], axis='rows')
df.drop(['Population', 'HDI'], axis=1) # axis是1代表列
df.drop(['Population', 'HDI'], axis='columns')

但这个操作直接修改df:

df.drop(columns='Language', inplace=True)

稍微注意一下两者区别即可。

小结

介绍了Pandas DataFrame的基本运用。

原视频链接:https://www.youtube.com/watch?v=r-uOLxNrNk8
Data Analysis with Python - Full Course for Beginners (Numpy, Pandas, Matplotlib, Seaborn)

上一篇:4小时学完Python数据分析入门笔记(三)
下一篇:未完待续To be continued…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值