datawhale动手学数据分析学习记录
import numpy as np
import pandas as pd
df1 = pd.read_csv('./train.csv')
df2 = pd.read_csv(u'F:/Note/hands-on-data-analysis-master/第一单元项目集合/train.csv', encoding = "gbk")
路径中存在中文路径的解决方法:python3 处理中文路径
encoding代表文件的编码格式,常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等。如果编码指定错误数据将无法读取,IPython解释器会报解析错误。
df3 = pd.read_table('./train.csv', sep = ',', engine = 'python')
因此,可使用 sep
参数来处理两种类型文件: sep = '\t'
, sep = ','
Pandas数据集的分块读取
chunksize
参数reader = pd.read_csv('./train.csv', usecols = ['PassengerId', 'Survived', 'Sex'], chunksize = 5)
for i in reader:
print(i)
reader = pd.read_csv('./train.csv', usecols = ['PassengerId', 'Survived', 'Sex'], iterator= True)
while True:
try:
print(reader.get_chunk(5))
except StopIteration:
break
通过 type(reader)
可以获取到 reader
的类别为
,是一个可迭代对象 。
这种逐块读取的好处是:避免一次性读取数据后内存不够。
pandas.read_csv分块读取大文件(chunksize、iterator=True)
df = pd.read_csv('./train.csv')
df.columns = [' 乘客ID', '是否幸存', '乘客等级(1/2/3等舱位)',
'乘客姓名','性别', '年龄', '堂兄弟/妹个数', '父母与小孩个数',
'船票信息', '票价', '客舱','登船港口']
df.rename(columns = {'性别': 'Sex'}, inplace = True)
df.head()
# 查看数据基本信息
df.info()
# 观察表格前10行和后15行
df.head(10)
df.tail(15)
# 判断数据是否为空,为空的地方返回True,其余地方返回False
df.isnull()
df.to_csv('./train_chinese.csv', index = False, encoding = 'utf-8')
s = pd.Series(data = [100, 'a', {'dict':5},
index = pd.Index(['id', 20, 'third', name = 'my_idx'),
dtype = 'object',
name = 'my_name')
s
df = pd.DataFrame(data = np.array([['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
[2000, 2001, 2002, 2001, 2002, 2003],
[1.5, 1.7, 3.6, 2.4, 2.9, 3.2]]).T,
index = ['row_{}'.format(i) for i in range(6)],
columns = ['state', 'year', 'pop'])
df
df = pd.read_csv('./train.csv')
df.columns
df['Cabin'].unique()
df_test = pd.read_csv('./test_1.csv')
df_test_copy = df_test.drop([i for i in df_test.columns if i not in df.columns],
axis = 1)
df_test_copy.info()
df.drop(['PassengerId','Name','Age','Ticket'], axis = 1).info()
# 显示年龄在10岁以下的乘客信息
df[df['Age']<10]
# 将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df[(df['Age'] > 10) & (df['Age'] < 50)]
midage = midage.reset_index(drop=True)
midage.loc[[100], ['Pclass', 'Sex']]
midage.loc[[100,105,108],['Pclass','Name','Sex']]
midage.iloc[[100,105,108],[2,3,4]]
Pandas.DataFrame中loc()和iloc()的区别
排序、算术计算以及计算描述函数的使用
frame = pd.DataFrame(np.arange(8).reshape((2, 4)),
index=['2', '1'],
columns=['d', 'a', 'b', 'c'])
frame
# 以 c 的值排序,升序
frame.sort_values(by='c', ascending=True)
总结:
KaTeX parse error: Expected 'EOF', got '#' at position 27: …ort_values(by=‘#̲#’,axis=0,ascen…
Pandas-排序函数sort_values()
df.sort_values(by=['票价', '年龄'], ascending=False).head()
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
max(df['堂兄弟/妹个数'] + df['父母与小孩个数'])
df.describe()
df['票价'].describe()