VSCode下载:https://code.visualstudio.com/Download
Miniconda下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Windows-x86_64.exe
基于链接下载VSCode和Miniconda
Miniconda环境配置
创建环境
conda create -n env_name python=3.10
进入环境
conda activate env_name
退出环境
conda deactivate
Jupyter Notebook 使用
安装
pip install jupyter
打开
jupyter notebook
python详细教程
聪明办法学Python:https://datawhalechina.github.io/learn-python-the-smart-way-v2/
菜鸟教程:https://www.runoob.com/python3/python3-basic-syntax.html
with open("1523.txt",'w') as f: with open("1523.txt",'w') as f:
f.write( ) print(f.read())
pandas
导入numpy和pandas
import numpy as np
import pandas as pd
载入数据,使用相对路径和绝对路径
df = pd.read_csv('./train.csv') df = pd.read_csv(r'D:\pands入门\train.csv'
df df
每1000行为一个数据块,逐块读取
chunker = pd.read_csv('./train.csv',chunksize=10)
for i in chunker:
print(i)
将表头改成中文,索引改为乘客ID [对于某些英文资料,我们可以通过翻译来更直观的熟悉我们的数据]
PassengerId => 乘客ID Survived=> 是否幸存 Pclass=> 乘客等级(1/2/3等舱位)
Name=> 乘客姓名 Sex=> 性别 Age=> 年龄 SibSp=> 堂兄弟/妹个数
Parch=> 父母与小孩个数 Ticket => 船票信息 Far => 票价
Cabin => 客舱 Embarked => 登船港口
df = pd.read_csv('train.csv',names=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header = 0)
df
查看数据的基本信息
df.info()
观察表格的前几行和后几行
df.head(10) df.tail(10)
判读数据是否为空,不为空返回False,为空返回True
df.isnull()
将你加载并做出改变的数据,在工作目录下保存为一个新文件train_chinese.csv
# 注意:不同的操作系统保存下来可能会有乱码。大家可以加入`encoding='GBK' 或者 ’encoding = ’utf-8‘‘`
df.to_csv('train_chinese.csv')
查看DataFrame数据的每列的名称
df.columns
查看"Cabin"这列的所有值
df['Name'].head(3) df.Name.head(3)
加载文件"test_1.csv",然后对比"train.csv",看看有哪些多出的列,然后将多出的列删除
test1 = pd.read_csv('test_1.csv')
test1
del test1['a']
test1.head(3)
将['PassengerId','Name','Age','Ticket']这几个列元素隐藏,只观察其他几个列元素
df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)
我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
df[df['Age']<10].head(3)
以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df[(df['Age']>10)&(df['Age']<50)]
midage.head(3)
将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
midage.loc[[100],['Pclass','Sex']]
使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],['Pclass','Name','Sex']]
使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.iloc[[100,105,108],[2,3,4]]
利用Pandas对示例数据进行排序,要求升序
#自己构建一个都为数字的DataFrame数据
frame = pd.DataFrame(np.arange(8).reshape((2, 4)),
index=['2', '1'],
columns=['d', 'a', 'b', 'c'])
frame
pd.DataFrame() :创建一个DataFrame对象
np.arange(8).reshape((2, 4)) : 生成一个二维数组(2*4),第一列:0,1,2,3 第二列:4,5,6,7
index=['2, 1] :DataFrame 对象的索引列
columns=['d', 'a', 'b', 'c'] :DataFrame 对象的索引行
# 大多数时候我们都是想根据列的值来排序,所以,将你构建的DataFrame中的数据根据某一列,升序排列
frame.sort_values(by='c',ascending=True)
# 让行索引升序排序
frame.sort_index()
# 让列索引升序排序
frame.sort_index(axis=1)
# 让列索引降序排序
frame.sort_index(axis=1,ascending=False)
# 让任选两列数据同时降序排序
frame.sort_values(by=['a','c'],ascending=False)
利用Pandas进行算术计算,计算两个DataFrame数据相加结果
frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),
columns=['a', 'b', 'c'],
index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),
columns=['a', 'e', 'c'],
index=['first', 'one', 'two', 'second'])
frame1_a + frame1_b
两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN。
通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
max(text['堂兄弟/妹个数'] + text['父母与小孩个数'])
学会使用Pandas describe()函数查看数据基本统计信息
frame2 = pd.DataFrame([[1.4, np.nan],
[7.1, -4.5],
[np.nan, np.nan],
[0.75, -1.3]
], index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
frame2
# 调用 describe 函数,观察frame2的数据基本信息
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
frame2.describe()
DATAFRAME
处理缺失数据:DataFrame 可以包含缺失数据,Pandas 使用 NaN(Not a Number)来表示
data:DataFrame 的数据部分,可以是字典、二维数组、Series、DataFrame 或其他可转换为 DataFrame 的对象。如果不提供此参数,则创建一个空的 DataFrame。
index:DataFrame 的行索引,用于标识每行数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。
columns:DataFrame 的列索引,用于标识每列数据。可以是列表、数组、索引对象等。如果不提供此参数,则创建一个默认的整数索引。
dtype:指定 DataFrame 的数据类型。可以是 NumPy 的数据类型,例如 np.int64、np.float64 等。如果不提供此参数,则根据数据自动推断数据类型。
copy:是否复制数据。默认为 False,表示不复制数据。如果设置为 True,则复制输入的数据
实例 - 使用列表创建
import pandas as pd
data = [['Google', 10], ['Runoob', 12], ['Wiki', 13]]
# 创建DataFrame
df = pd.DataFrame(data, columns=['Site', 'Age'])
# 使用astype方法设置每列的数据类型
df['Site'] = df['Site'].astype(str)
df['Age'] = df['Age'].astype(float)
print(df)
实例 - 使用字典创建
import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
print ()
CSV
csv文件是一种用,和换行符区分数据记录和字段的一种文件结构,可以用excel表格编辑,也可以用记事本编辑,是一种类excel的数据存储文件,也可以看成是一种数据库.
df.to_csv 写入到 csv 文件
pd.read_csv 读取 csv 文件
df.to_json 写入到 json 文件
pd.read_json 读取 json 文件
df.to_html 写入到 html 文件
pd.read_html 读取 html 文件
df.to_excel 写入到 excel 文件
pd.read_excel 读取 excel 文件
pandas使用chunksize分块处理大型csv文件
想使用分块处理,只需在read_csv()方法中加入chunksize=100000(这里假设每一块有100000行),代码如下:
df=pd.read_csv('data.csv',header=None,chunksize=100000)
然后使用for循环去每块每块地去处理(chunk的type是DataFrame):
for chunk in df:
print(chunk)