python pandas笔记

数据读取

可以读取excel,csv等:

df = pd.read_excel("Name.xlsx")
df = pd.read_csv("Name.csv")

在读入Excel的时候,加入 index_col=0参数可以避免出现多余的一列

Dataframe 的创建

使用字典创建

dic = {'name1':[1,2,3],'name2':[4,5,6]}
df = pd.DataFrame(dic)
>>>
    name1  name2
0    1      4
1    2      5
2    3      6

指定行列和数据来创建

df = pd.DataFrame(columns=["name2","name1"],index=['A','B','C'],
                  data={'name1':[1,2,3],'name2':[4,5,6]})
>>>
  name2  name1
A   4     1
B   5     2
C   6     3

数据类型转换

df = df.astype(str)

取得dataframe其中的数据

假设有如下dataframe

df  = pd.read_csv('Info.csv')
print(df)
>>>
   name   Age     Sex
0   A      40    "male"
2   B      23    "male"
1   C      61    "female"

注意,这里的索引是0,2,1不是0,1,2。这对我们后面讲解iloc和loc有作用

条件获取

print(df[df['Sex']=='male'])
>>>
   name   Age     Sex
0   A      40    "male"
2   B      23    "male"

loc,iloc

loc: pd.loc[name_of_index,name_of_column]:也就是根据行和列的名字来定位
iloc: pd.iloc[rank_of_index,rank_of_column]:也就是更加行和列的次序(第几行第几列)来定位

print(df.loc[1,'name'])
>>> C
print(df.iloc[1,0])
>>> B

切片(只能获取行)

格式: df[start:end:step]

print(df[0:3:2])
>>>
  name  Age     Sex
0    A   40    male
1    C   61  female

dataframe中数据的删除

假设有如下dataframe

df  = pd.read_csv('Info.csv')
print(df)
>>>
   name   Age     Sex
0   A      40    "male"
2   B      23    "male"
1   C      61    "female"

`py
df.drop(columns=['Sex'], inplace=True)
print(df)
>>>
  name  Age
0    A   40
2    B   23
1    C   61

删除行

df.drop(index=[1], inplace=True)
print(df)
>>>
  name  Age   Sex
0    A   40  male
2    B   23  male

由于传入index和column的参数是一个列表,因此可以批量删除

Dataframe的合并

假设有如下dataframe

df  = pd.read_csv('Info.csv')
df2  = pd.read_csv('Info2.csv')
print(df)
print(df2)
>>>
   name   Age     Sex
0   A      40    "male"
2   B      23    "male"
1   C      61    "female"
>>>
   name   Age     Sex
0   AA      44    "female"
1   BB      31    "female"

concat函数

  • 简单的增加行数(df2就是df后面要增加的行):
print(pd.concat([df2,df],ignore_index=True))
>>>
  name  Age     Sex
0   AA   44  female
1   BB   31  female
2    A   40    male
3    B   23    male
4    C   61  female

(这里如果不ignore_index的话,索引就会变成0,1,0,2,1)

  • 简单的增加列数(把df2放在df1右边然后拼上):
print(pd.concat([df,df2],axis=1))
>>>
  name  Age     Sex name   Age     Sex
0    A   40    male   AA  44.0  female
1    C   61  female   BB  31.0  female
2    B   23    male  NaN   NaN     NaN

其中如果发现拼上不能凑成一个长方形,就把空出来的地方补上NaN,就像上面一样

  • dataframe可以直接添加列,不需要使用函数
df['Location']=['Asia', 'Asia', 'Asia']
print(df)
>>>
  name  Age     Sex Location
0    A   40    male     Asia
2    B   23    male     Asia
1    C   61  female     Asia

merge函数

  • 按照某列的值来合并(比如按照身份证号码整合一群人的信息)

假设有如下dataframe:

print(df)
print(df2)
>>>
  name  Age     Sex
0    A   40    male
2    B   23    male
1    C   61  female
  Name       Hobby       Talent
0    A  literature      writing
1    B   chemistry    energetic
2    C      sports  strong will

按照名字合并:

print(pd.merge(df, df2, left_on='name', right_on='Name'))
>>>
  name  Age     Sex Name       Hobby       Talent
0    A   40    male    A  literature      writing
1    B   23    male    B   chemistry    energetic
2    C   61  female    C      sports  strong will

如果需要可以将多出来的Name行删掉

merge详解:

https://blog.csdn.net/weixin_39639919/article/details/110970746?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.1&utm_relevant_index=3

Dataframe缺失值的填充

python pandas笔记

; Dataframe排序

假设有如下dataframe

df  = pd.read_csv('Info.csv')
print(df)
>>>
   name   Age     Sex
0   A      40    "male"
2   B      23    "male"
1   C      61    "female"

依照年龄排序

df.sort_values(by='Age', ascending=True, inplace=True)
print(df)
>>>
  name  Age     Sex
2    B   23    male
0    A   40    male
1    C   61  female

其中, ascending=True是升序,否则是降序

dataframe apply

df['ExtraScore'] = df['Nationality'].apply(lambda x : 5 if x != '汉' else 0)

查看dataframe的大致情况

python pandas笔记

; 可视化

matplotlib库

导入模块: import matplotlib.pyplot as plt

一个matplotlib更加全面的教程

基本操作

创建画布: fig = plt.figure()

添加子图: axes = fig.add_subplot(a, b, c):定义fig中一共有a行b列个子图,axes是这些图中的第c个。画统计图需要在子图里面进行。如果只想画一个图,就可以让a,b,c都等于1

给子图添加横纵坐标标题: axes.set_xlabel('x'),axes.set_ylabel('y')

给子图添加标题: axes.set_title('title)

显示画布(必须要加,不然显示不出来): plt.show()

使用条件判定

单变量:直方图,散点图,饼图:x为变量,y为值的分布

双变量:箱线图,散点图:x为变量,y为变量

多变量:散点图,堆叠图:x为变量,y为变量,颜色,大小等也可以表示变量

添加线图

axes.plot(X_data, Y_data)

添加直方图

axes.hist(data,bins=a),也就是将data分成a段

散点图

axes.scatter(x=data1,y=data2,s=size,c=color,alpha=0.5):以data1为横轴,data2为纵轴,点的大小为size,颜色为color,透明度为0.5画散点图

箱线图

axes.boxplot([data1,data2],labels=['label1','label2']):将数据分成data1和data2两组,分别赋予label1和label2这两个标签名

饼图

pies.pie(x=, labels=, autopct=,counterclock=)

例子

import pandas as pd
import matplotlib.pyplot as plt

tips = pd.read_csv("seaborndata/tips.csv")
fig = plt.figure(figsize=(14, 14))
axes1 = fig.add_subplot(3, 2, 1)
axes1.hist(tips['total_bill'], bins=10)
axes1.set_title("Histogram of Total Bill")
axes1.set_xlabel("Total Bill")
axes1.set_ylabel("Frequency")

scatter_plot = fig.add_subplot(3, 2, 2)
scatter_plot.scatter(tips['total_bill'], tips['tip'])
scatter_plot.set_title("Scatterplot of Total Bill VS Tip")
scatter_plot.set_xlabel("Total Bill")
scatter_plot.set_ylabel("Tip")

box_plot = fig.add_subplot(3, 2, 3)
box_plot.boxplot([tips[tips['sex'] == 'Female']['tip'], tips[tips['sex'] == 'Male']['tip']], labels=['Female', 'Male'])
box_plot.set_xlabel('Sex')
box_plot.set_ylabel('Tip')
box_plot.set_title("Boxplot of Tips by Sex")

def sexcode(sex):
    if sex == 'Female':
        return 2
    return 1

tips['sex_color'] = tips['sex'].apply(sexcode)
scatter_plot_color = fig.add_subplot(3, 2, 4)
scatter_plot_color.scatter(x=tips['total_bill'], y=tips['tip'], s=tips['size']*10, c=tips['sex_color'], alpha=0.5)
scatter_plot_color.set_title('Total Bill with color')
scatter_plot_color.set_xlabel("Total Bill")
scatter_plot_color.set_ylabel("Tip")

pies = fig.add_subplot(3, 2, 5)
pies.pie(x=[1, 23, 3.4, 14.4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%1.1f%%',counterclock=False)

fig.show()

python pandas笔记

Original: https://blog.csdn.net/weixin_43907802/article/details/122426927
Author: AndrewMe8211
Title: python pandas笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/738563/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 用Python中的Numpy实现简单高效的扑克牌API(附代码)

    用Python中的Numpy实现简单高效的扑克牌API 扑克牌可以用字典或者列表来表示,但是这样的话会浪费很多的空间。因此,本项目将使用 Numpy来实现,这样的话能保证性能的情况…

    Python 2023年8月25日
    057
  • 基于深度学习的文本分类案例:使用LSTM进行情绪分类

    Sentiment classification using LSTM 在这个笔记本中,我们将使用LSTM架构在电影评论数据集上训练一个模型来预测评论的情绪。首先,让我们看看什么是…

    Python 2023年10月21日
    049
  • 数据分析业务场景 | 用户画像

    一.概况 定义 是根据用户的一系列行为和意识过程建立起来的多维度标签;是根据用户人口学特征,网络浏览内容,网络社交活动和消费行为等信息而抽象出的一个标签化的用户模型;首要任务:根据…

    Python 2023年10月9日
    045
  • Pytest学习之路(一)

    今天和大家入门pytest,学习并分享我接触到的这个框架。 一.pytest简介 1.pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittes…

    Python 2023年9月10日
    035
  • 【愚公系列】2022年04月 Python教学课程 72-DRF框架之认证和权限

    身份验证是将传入请求与一组标识凭据(如请求来自的用户或签名时使用的令牌)关联的机制。然后,权限和限制策略可以使用这些凭据来确定是否应允许请求。 REST 框架提供了几种开箱即用的身…

    Python 2023年8月4日
    087
  • Python写游戏,我上我也行 – Flappy Bird 03

    如果你喜欢自动化:一起学爬虫(Python) — 19 年轻人,进来学自动化 如果你想学习爬虫相关的知识,就关注一下下,点赞一下下,然后到小泽的主页里,尽情遨游吧~ 努力做日更博主…

    Python 2023年9月21日
    036
  • 联合证券|再创纪录,外资狂买超1000亿!券商、期货板块持续活跃

    详细来看,两市股指盘中震动上扬,午后全线走高,创业板指、科创50指数涨超1%;到收盘,沪指涨0.49%报3240.28点,深成指涨0.87%报11913.26点,创业板指涨1.08…

    Python 2023年11月6日
    031
  • pandas之groupby操作——数据分析必备技能(4)

    ### 回答1: Pandas_是一个Python库,用于数据处理和分析。在 _数据分析_中,预处理是非常重要的一步,因为它可以帮助我们清洗和转换数据,使其更适合进行分析。 _Pa…

    Python 2023年8月21日
    061
  • 计算机底层一些东西

    首先我们知道计算机是不懂文字的,那我们怎们让它明白文字并执行我们的指令呢? 一、计算机底层怎么去表示信息 计算机中的晶体管通过大电流和小电流可以表示两种状态,就好像一个开关一样,假…

    Python 2023年6月9日
    068
  • B站(bilibili) 等级升级脚本-云函数版

    前言 云函数运行会莫名其妙的报错(我也不知道为什么,我这边测试有时候报错,有时候不会),并非代码有错,建议在本地运行。 由于之前写的代码有些bug,后面又又又又又又又更新了。 最后…

    Python 2023年6月10日
    078
  • 动态更改Spring定时任务Cron表达式的优雅方案

    “Most of you are familiar with the virtues of a programmer. There are three, of cour…

    Python 2023年10月11日
    058
  • 矩池云产品最新动态 All in One

    AI/ML 的不断革新,让我们看到了更多激动人心的应用方向,也迸发了更多的训练&应用场景。 在用户的反馈和建议下,矩池云持续丰富和优化在 AI+Science 链路上的相关…

    Python 2023年10月29日
    045
  • Scrapy初体验

    Scrapy初体验 1. scrapy介绍 1.0 介绍 ​ Scrapy 是一个基于 Twisted 的异步处理框架,是纯 Python 实现的爬虫框架,其架构清晰,模块之间的耦…

    Python 2023年10月5日
    044
  • python 学习笔记:DASK基础操作

    学习笔记:DASK基础操作 1.导包 import dask.dataframe as dd import numpy as np 2.读取csv文件 ddf = dd.read_…

    Python 2023年8月27日
    034
  • Python Django项目-Django基本运行过程

    这几天一直在搞这个项目随着Django的更新很多以前的代码需要重新修改。因此我将为大家写下新的django+pyecharts的内容,最终目标是实现动态生成数据,并通过pyecha…

    Python 2023年8月3日
    052
  • Numpy简介和特点(一)

    一、NumPy是什么? NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库…

    Python 2023年8月25日
    053
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球